2010-10-01 227 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指針呢?

相關問題