“別看free和delete的名字惡狠狠的(尤其是delete),它們只是把指針所指的內存給釋放掉,但并沒有把指針本身干掉。……”
指針仍在棧中,只不過指向的內存單元被釋放掉。
如:
int *p ;
/*p在棧中;*/
p = new int ( 100 ) ;
/*在堆中申請一塊長度為4字節(int),并賦值為100; p 指向這個單元。假設單元地址為 address0 , 則 p = address0;*/
delete p ;
/*釋放掉 p 指向的單元,但 p 仍存在,p 在棧中,并且 p 仍等于 address0;
直到 p 的生命期結束,內存管理自動釋放 p,指針p 就被干掉了!!*/
需要說明的是,我們往往在程序,或者函數結尾時,進行 delete ;這時指針的生命周期往往也隨之結束,所以這個細節很少被人注意,我們沒有碰到這類的麻煩。對于寫程序不注意結構化,不注意分模塊,就會有隱患,嘿嘿。
感謝作者的總結,我只是寫了我臨時產生的體會。
re: A simple Game 邵騰飛 2006-11-09 20:19
我下載不下來,期待你發給我,shaotengfei1984@yahoo.com.cn
re: vc 使用總結 邵騰飛 2006-11-08 21:32
總結了很多經驗,雖然有些我知道,但看了你寫的一些東西后,我才懂得更全面。謝謝!