是否有指向解除分配内存的指针?
答案 0 :(得分:6)
C ++完全按照你的要求去做。您没有将指针设置为null,而是删除了指针指向的内存。
如果您不需要,为什么要浪费额外的步骤将其设置为null(出于性能原因)?
答案 1 :(得分:5)
如果它是一个const指针怎么办?
答案 2 :(得分:1)
不,将其设置为原始值并没有真正的用处,除了显示人们在编写代码方面有多么无能为力: - )
它遵循C的传统,因为你应该知道你在做什么。将编译器设置释放指针设置为NULL的成本在C天被认为太高,并且已经转移到带有delete
的C ++。如果编码正确,那么让编译器将指针设置为NULL是一种浪费,因为你要么将它设置为其他东西,要么不再使用它。
如果确实希望让您的代码更安全,那么您可以执行类似(在C中)的操作:
void myFree (void **pMem) {
free (**pMem);
*pMem = NULL;
}
myFree (&x);
而不只是:
free (x);
但是,如果你要进入那个级别(并引入这样的憎恶),只需切换到Java并完成它,那么你根本不必关心手动内存管理。< / p>