因此,在main.c中,我得到了這部分代碼,它打印加密的內容,如果它不爲空。它非常簡單。C:Cppcheck:可能的零點取消引用
CPP的錯誤是:
空[main.c中:40]:(誤差)可能的空指針:加密 - 否則它是多餘的,以檢查是否加密是在管線31
代碼:
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:%s\n", encrypted);} //this is line 40
事情是,它的工作如預期,但cppcheck一直纏着我,我應該修復它?這是否是錯誤的?
如果你到了40行,'encrypted'肯定是空的,'的printf(「加密: %s \ n「,加密)'是未定義的行爲。 – aschepler