2010-04-26 37 views

回答

14

它不能。

這會:

char * a = malloc(556); 
char * b = a; 
free(a); 
a = NULL; 

b爲現在懸擺指針,因爲它指出,它的對象的消失,但b還是存儲地址到內存中使用的對象是,你得到有趣的結果,當你嘗試訪問它 - 這取決於內存是否被重用或未被觸動。

3

如果第一「一些代碼」副本從cPointer指針值到一些其他指針變量,而第二「一些代碼」使用了其他指針變量,這將是麻煩了。

如果第一個「某些代碼」生成一個異常,所以永遠不會到達該空閒空間,它將泄漏內存。

+0

假設某些代碼沒有任何相關的指針,如果我不給cPointer = NULL;語句是否意味着我有一個cPOinter中的懸掛指針? – ckv 2010-04-26 07:09:24

+1

@viswanathan,也許你會想編輯你的問題,並確保你的措辭不允許你認爲不正確的答案。 – 2010-04-26 07:11:03

+1

如果您刪除了cPointer = NULL;語句,那麼cPointer將是一個懸掛指針,但只會在使用它時導致問題。程序員分配NULL的目的是幫助捕獲意外的用途,即幫助查找錯誤並進行調試。 – 2010-04-26 07:16:38