2010-10-01 50 views
3

可能重复:
Why doesn't delete set the pointer to NULL?为什么C++删除操作符不会将指针设置为NULL?

是否有任何目的的指针解除分配的内存?

+0

[为什么不删除将指针设置为NULL?](http://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null)的精确副本 – 2010-10-01 03:00:53

+0

糟糕。没有看到。 – Vanuan 2010-10-01 03:02:35

+0

另请参阅http://stackoverflow.com/questions/1931126/is-it-good-practice-to-null-a-pointer-after-deleting-it – 2010-10-01 03:17:36

回答

1

没有,有没有真正使用到离开它设置为原始值,除了向人们展示如何无能处于:-)

它遵循你应该知道的C在传统编写代码你在做什么。使C编译器将指针释放为NULL的代价在C日期内被认为过高,并且这已转到C++并使用delete。如果你编码正确,那么让编译器将指针设置为NULL是很浪费的,因为你要么将它设置为别的,要么不再使用它。

如果你真的使你的代码更安全,你会做这样的事情(在C):

void myFree (void **pMem) { 
    free (**pMem); 
    *pMem = NULL; 
} 
myFree (&x); 

,而不是只:

free (x); 

但是,如果你”重新进入这个层次(并且引入这样一种憎恶),只需切换到Java并完成它就可以完成,那么你根本不必关心手动内存管理。

+0

或使用智能指针。 :) – GManNickG 2010-10-01 03:32:33

6

C++完全按照您的指示进行操作。您没有将指针设置为空,您删除了指针指向的内存。

如果您不需要,为什么要浪费将其设置为空(出于性能原因)的额外步骤?

5

如果它是一个const指针呢?

相关问题