2016-03-22 29 views
2

私の下のコードが正しく動作しているが、それでも「cppcheck」、以下 cppcheck:可能なヌルポイント間接参照

Either the condition 'mem_limit_str!=0' is redundant or there is possible null pointer dereference: mem_limit_str. 

はコードで、警告を与えている

​​3210 これを解決するために、誰も私を助けることができる

+3

あなたは 'free(NULL)'を使うことができるので、チェックは役に立たない。 –

+0

Ok、ありがとう.... – Chirag

答えて

5

free ingの前にヌルポインタを確認する必要はありません。あなたは、単に言うことができます:

free(mem_limit_str); // no if condition 

この警告はちょうどif条件が冗長であることを伝えます。

n1124ドラフト

7.20.3.2フリー機能

あらすじ

#include <stdlib.h> 
void free(void *ptr); 

説明

から

free関数は、ptrが指し示すスペースを に割り当て解除します。つまり、割り当てを再開できるようになります。 ptrがNULLポインタの である場合、アクションは発生しません。 [...]

+0

mem_limit_strがNULLを指している場合は、セグメンテーションフォルトが発生します。 – Chirag

+0

いいえ、解放はnullポインタが完全に有効です –

+1

OK Triedありがとうございます。私はNULLが有効でないことを解放すると思った。 – Chirag

3

std::freeヌルポインタでも使用できます。チェックは冗長です。

ptrがNULLポインタの場合、関数は何も行いません。

ところで、deletedelete[]でもそうです。

+0

ありがとう、それは役に立ちます – Chirag

+3

@Chirag BTW、それは 'delete'と' delete [] 'についてもC++で同じです。 – songyuanyao

関連する問題