理論的には
free(ptr);
free(ptr);
すでに解放されているメモリを解放しているため、メモリ破損です。
しかし、もし
free(ptr);
ptr=NULL;
free(ptr);
OSは未定義の方法で動作するので、何が起こっているのかについてこれに関する実際の理論的分析を得ることができません。私が何をしていても、このメモリ破損はありますか?
NULLポインタの解放は有効ですか?
delete NULLC ++では無効です。deleteは具象型のnullポインター値に適用できますが、には適用できませんNULL。delete (int*) NULLは合法ですが、ではありませんdelete NULL。
ptrメモリをポイントしfree、それを呼び出さない場合、メモリがリークします。それをNULLメモリのハンドルを失うだけに設定すると、リークします。場合ptr であることを起こるNULL、呼び出しはfree無操作です。
free(ptr)とptr = NULL。誰もそのようなことは何も言わなかった。