3
A
回答
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指针呢?
相关问题
- 1. 删除指针并将指针设置为NULL有什么区别?
- 2. 为什么不能将此指针设置为NULL?
- 3. 为什么建议在删除指针后将指针设置为空?
- 4. 为什么删除操作符操作符不会删除NodeList类的属性?
- 5. 为什么移动一个指针变量不会将它设置为null?
- 6. 在删除之前将指针设置为NULL
- 7. 删除指针但不为NULL
- 8. JNA:将结构指针设置为NULL
- 9. 删除后指针未设置为nullptr
- 10. 为什么下面的runner指针不会变为null?
- 11. 为什么不能使用NULL指针?
- 12. 为什么我的指针不是NULL?
- 13. 赋值操作符创建指针并且不会使删除成为可能
- 14. 为什么rails'update_attributes将param设置为null?
- 15. 为什么指令不会设置类?
- 16. C++ - 为什么删除后将对象设置为空?
- 17. 为什么fread调用将我的文件指针设置为null?
- 18. 为什么在Valgrind中将指针设置为NULL给出错误/警告?
- 19. C++设置字符指针为空
- 20. 如何在C中将结构指针设置为NULL?
- 21. C++:为什么不是像删除指针那样设计的析构函数?
- 22. 为什么将原始指针投射到unique_ptr不会删除原始文件?
- 23. 将指针设置为零,objective-c
- 24. 为什么不将此路线设置为默认操作?
- 25. 在C中设置一个指针为NULL,而不是编译
- 26. 当我想删除它时,指针甚至不能设置为NULL
- 27. 设置stuct中的指针为null
- 28. 为什么不从null中删除GameObjects?
- 29. 为什么将ComboBox.SelectedValue设置为null会导致ArgumentNullException?
- 30. 为什么这个指针操作序列会导致错误?
[为什么不删除将指针设置为NULL?](http://stackoverflow.com/questions/704466/why-doesnt-delete-set-the-pointer-to-null)的精确副本 – 2010-10-01 03:00:53
糟糕。没有看到。 – Vanuan 2010-10-01 03:02:35
另请参阅http://stackoverflow.com/questions/1931126/is-it-good-practice-to-null-a-pointer-after-deleting-it – 2010-10-01 03:17:36