customer作為隊列元素時不用刪除指針p嗎?
在使用int作為隊列元素時,老師最后一行有delete p;p=NULL;刪除MyQueue指針。然而在用customer作為元素時,老師將這行代碼注釋掉,并且之后也沒有加上。我自己在寫的時候加上發(fā)現(xiàn)運行時會報錯關(guān)于指針使用不當(dāng),請問這是為什么?
在使用int作為隊列元素時,老師最后一行有delete p;p=NULL;刪除MyQueue指針。然而在用customer作為元素時,老師將這行代碼注釋掉,并且之后也沒有加上。我自己在寫的時候加上發(fā)現(xiàn)運行時會報錯關(guān)于指針使用不當(dāng),請問這是為什么?
2017-04-15
舉報
2017-12-26
系統(tǒng)按順序應(yīng)該先刪除customer的內(nèi)存,然后再是p的內(nèi)存。而customer的內(nèi)存是棧實例化的,所以只有執(zhí)行了return 0;后才會刪除。使用了delete p;會導(dǎo)致系統(tǒng)先刪除queue的內(nèi)存,順序不對,所以執(zhí)行出現(xiàn)問題。所以不能加delete p;在結(jié)束整個程序后就會自動刪除。我個人見解,刪除內(nèi)存主要運用在一個程序沒有完結(jié)但一個類或函數(shù)已經(jīng)完結(jié)的情況下,可以減少內(nèi)存泄漏。如果整個程序都結(jié)束,就不存在內(nèi)存泄漏的問題了。
2018-07-27
我也出錯了? 把Customer 改成堆上申請內(nèi)存? 還是會異常
2017-04-25
我加上了
delete p;
p=NULL;
沒有報錯
2017-04-16
會執(zhí)行的,當(dāng)你在請按任意鍵繼續(xù)的界面時候,按下任意鍵,他會執(zhí)行的哦,你仔細檢查一下你的代碼