爲(wèi)吾之夢想
2016-06-01 23:35:10
在學(xué)new之前 ? 我們寫一段代碼 ?int *p;*p=20;cout<<*p<<endl; ? 這段代碼可以打印20; ?但是并不需要申請內(nèi)存,所以我想知道什么情況下才需要用new申請內(nèi)存?。?
3 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗 獲得超454個贊
只有這幾句,你確定能打印出20??
也許只有極小的可能性會打印出20。
你只是聲明了一個int指針p,你沒有讓p沒有指向任何有意義的東西!(當(dāng)然準(zhǔn)確地說,p指向一個隨機(jī)地址;或者當(dāng)p是全局變量時,p就是NULL)
然后你就向*p賦值? ?這值會賦給一個隨機(jī)地址(或是NULL地址)! ?這有極大極大的可能性會導(dǎo)致程序segmentation fault。
只聲明一個指針并不會為它分配內(nèi)存的。 一般使用指針是讓它指向有意義的地址,如指向既有的變量?;蚴怯胣ew申請一塊內(nèi)存給指針。
函數(shù)中的對象會隨著函數(shù)的結(jié)束而銷毀。 當(dāng)你需要一個對象可以長期存在或是不想讓它隨函數(shù)銷毀的話,就要用new申請一塊內(nèi)存。 不過要記住這塊內(nèi)存需要你手動管理生存期,不用時要記得delete掉。

慕粉3187274
TA貢獻(xiàn)18條經(jīng)驗 獲得超13個贊
目前的情況下 new申請空間一般不會失敗,那個錯誤處理也是為了以防萬一用的 要么你就在try塊里自己扔出一個異常來模擬一下
- 3 回答
- 0 關(guān)注
- 1905 瀏覽
添加回答
舉報
0/150
提交
取消