天天看點

free 和 delete 把指針怎麼了

使用free或delete之後,隻是把指針所指的内容給釋放掉,但是指針并沒有被幹掉,還是指向原來位置(并不是執行NULL),此時指針指向的内容為垃圾,被稱為“野指針”。

舉例說明幾個重要容易迷糊的特征:

1. 指針消亡了,并不表示他所指向的記憶體會被自動釋放。例:

當函數執行完時,指針變量因為存在于棧上,會自動消亡。但是這不意味着配置設定的空間也會自動釋放,原因是:動态非配的空間位于堆(動态記憶體配置設定區),必須自己去釋放;否則,調用一次函數,造成一次記憶體洩露。

2. 記憶體被釋放了,并不表示指針會自動消亡或變成NULL指針。例如

可以看出兩次輸出是一樣的,也就是說雖然内容被釋放掉了。但是指針還是指向原地。是以釋放掉指針後,應該立馬指派為NULL。

杜絕“野指針”

指針變量要初始化。要麼為NULL,要麼為合法的記憶體

指針被釋放掉時,将指針置位NULL

防止指針超越了變量的作用範圍。例:

free 和 delete 把指針怎麼了
free 和 delete 把指針怎麼了

本文轉自jihite部落格園部落格,原文連結:http://www.cnblogs.com/kaituorensheng/p/3247687.html,如需轉載請自行聯系原作者