次のことを考慮してください。
int * i = malloc(sizeof(int));
free(i);
私は現在、i
割り当て解除されたメモリを指しているシナリオにいますが、それもゼロではありません。これは C プログラミングの一般的なエラーi
です。次のようなことを行う前に、それがまだ有効なポインターであることを確認する方法はありますか。
*i++; //probable EXC_BAD_ACCESS crash
メモリを再利用しない限り、100% 信頼できる (誤検知のない) メソッドが存在することは完全に不可能であることはわかっています。しかし、ほとんどの場合に機能するものは、デバッグに最適です。
編集
ポインターを NULL に設定するべきではないと主張しているわけではありません。壊滅的な影響を与えずにアドレスを突くための移植可能な (POSIX っぽい) 方法があるかどうか疑問に思っているだけです。時間から発生する複雑なマルチスレッドの問題をデバッグすることに興味があるだけです。時間に。