C:Cppcheck :可能的空点取消引用



所以在main.c中,我得到了这部分代码,如果它不为空,它就会打印加密的内容。就这么简单。

cpp 错误是:

[main.c:40]:(错误(可能的空指针取消引用:加密 - 否则,在第 31 行检查加密是否为 null 是多余的

代码:

char* encrypted = bmp_encrypt(key, text);
    if(encrypted != NULL) //error points here (line 31)
    {
        printf("Encrypted:");
        for(int i=0; i<strlen(text);i++)
        {
            printf("%x ", (unsigned char) encrypted[i]);
        }
        printf("n");
    }
    else{printf("Encrypted:%sn", encrypted);} //this is line 40

问题是,它按预期工作,但 cppcheck 一直困扰着我,我应该修复它吗? 这样做有错吗?

encrypted为 NULL 时,才会输入代码的else块。 因此,您正在将 NULL 指针传递给 printf 。 这可能会调用未定义的行为。

由于您知道指针在此时为 NULL,只需显式打印它是 NULL:

else{printf("Encrypted: (null)n");} 

相关内容

  • 没有找到相关文章

最新更新