對(duì)于像 string *stringarray = new string[100]; 這樣的語(yǔ)句,釋放指針時(shí)不能象 delete stringarray 這樣寫,因?yàn)檫@樣寫的話,只是銷毀了第一個(gè)string對(duì)象的指針,其余的99個(gè)根本沒(méi)有被銷毀,這種情況極易引起內(nèi)存泄露。
上述語(yǔ)句必須這樣寫:string *stringarray = new string[100];
delete []stringarray;
如果你調(diào)用new時(shí)用了[],調(diào)用delete時(shí)也要用[]。如果調(diào)用new時(shí)沒(méi)有用[],那調(diào)用delete時(shí)也不要用[]。
當(dāng)你的構(gòu)造函數(shù)里有new 的指針時(shí),牢記這點(diǎn)更加重要。
如果類的成員有指針變量,那么一定記得在構(gòu)造函數(shù)中為它分配內(nèi)存或者讓它指向NULL,更關(guān)鍵的是要在析構(gòu)函數(shù)里把指針
變量釋放掉,同時(shí)記得不要產(chǎn)生野指針。我推薦一個(gè)最笨的也是最有效的方法,操作指針時(shí)首先檢查它是否有效。記住你只
要用了new,就一定用delete。