考虑以下:
int * i = malloc(sizeof(int));
free(i);
我现在处于i
指向已释放内存的情况,但它也非零;i
这是 C 编程中的一个常见错误,有没有办法在我去做类似的事情之前告诉它仍然是一个有效的指针:
*i++; //probable EXC_BAD_ACCESS crash
我知道完全不可能有 100% 可靠(无误报)的方法,除非你从未重用内存;但是大部分时间都有效的东西对于调试来说非常有用。
编辑
我并不是说您不应该将指针设置为 NULL,我只是想知道是否有一种可移植的(POSIXish)方法来戳地址而不会造成灾难性的影响,我只是对调试复杂的多线程问题感兴趣到时间。