重複の可能性:
解放後に変数をNULLに設定…
私は優れたCプログラミング手法について学んでおり、友人は、ポインターをfree()した後(または特定の解放関数を呼び出した後)は常にポインターをNULLに設定するように言ってきました。
例えば:
char* ptr = malloc(100);
...
free(ptr);
ptr = NULL;
また
struct graph* graph = create_graph();
...
destroy_graph(graph);
graph = NULL;
なぜこれが良い習慣なのですか?
更新:答えを読んだ後、それは私にはひどい習慣のようです!double-free()エラーの可能性を隠しています。どうすればこれが良い習慣になるのでしょうか?びっくりしました。
ありがとう、BodaCydo。