可能重复:
为什么不删除将指针设置为 NULL?
指向已释放内存的指针有什么目的吗?
C++ 完全按照您的指示去做。您没有将指针设置为空,而是删除了指针指向的内存。
如果不需要,为什么要浪费将其设置为 null 的额外步骤(出于性能原因)?
如果它是一个 const 指针怎么办?
不,将其设置为原始值并没有真正的用处,除了显示人们在编写代码方面是多么无能:-)
它遵循 C 语言的传统,因为您应该知道自己在做什么。在 C 时代,让编译器将释放的指针设置为 NULL 的成本被认为太高了,这已经延续到带有delete
. 如果您正确编码,那么让编译器将指针设置为 NULL 是一种浪费,因为您要么将其设置为其他值,要么不再使用它。
如果你真的想让你的代码更安全,你会做类似(在 C 中)的事情:
void myFree (void **pMem) {
free (**pMem);
*pMem = NULL;
}
myFree (&x);
而不仅仅是:
free (x);
但是,如果您要达到那个级别(并引入这种可憎的东西),只需切换到 Java 并完成它,那么您根本不必担心手动内存管理。