为什么c/c++中free和delete不增加释放空间后将指针置空的操作?

以避免内存空间被二次释放。
关注者
15
被浏览
6,064

8 个回答

只要允许指针复制,你就解决不了重复释放的问题。

另外,C 里没有引用,所以要在 free 里达到类似效果,你需要传指针的指针。语法上不方便,多一次间接,还不能解决问题,何苦呢?

当然,你愿意的话,自己完全可以造这样的轮子。如:

void free_ptr(void** ptr)
    free(*ptr);
    *ptr = NULL;