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