第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么情況下才需要用new申請內(nèi)存?

什么情況下才需要用new申請內(nèi)存?

C++
爲(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貢獻883條經(jīng)驗 獲得超454個贊

只有這幾句,你確定能打印出20??

也許只有極小的可能性會打印出20。

你只是聲明了一個int指針p,你沒有讓p沒有指向任何有意義的東西?。ó?dāng)然準確地說,p指向一個隨機地址;或者當(dāng)p是全局變量時,p就是NULL)

然后你就向*p賦值? ?這值會賦給一個隨機地址(或是NULL地址)! ?這有極大極大的可能性會導(dǎo)致程序segmentation fault。


只聲明一個指針并不會為它分配內(nèi)存的。 一般使用指針是讓它指向有意義的地址,如指向既有的變量?;蚴怯胣ew申請一塊內(nèi)存給指針。

函數(shù)中的對象會隨著函數(shù)的結(jié)束而銷毀。 當(dāng)你需要一個對象可以長期存在或是不想讓它隨函數(shù)銷毀的話,就要用new申請一塊內(nèi)存。 不過要記住這塊內(nèi)存需要你手動管理生存期,不用時要記得delete掉。

查看完整回答
反對 回復(fù) 2016-06-02
  • 爲(wèi)吾之夢想
    爲(wèi)吾之夢想
    其實 我很難理解 在什么情況下我們需要去分配內(nèi)存 我記得大一上學(xué)期學(xué) Hello Wrold時候 當(dāng)時沒有分配內(nèi)存 但是依舊可以輸出hello world?。。‖F(xiàn)在學(xué)了 new ,我總是糾結(jié) 難道在寫任何程序之前都需要申請內(nèi)存嗎?
  • onemoo
    onemoo
    所有變量(對象)都占據(jù)一塊內(nèi)存,變量的類型是決定這塊內(nèi)存是做什么用的。 你在代碼中定義的變量,都是被分配了內(nèi)存的。 如:int a; 這一句就定義了一個叫a的int變量,同時已經(jīng)分配了一塊內(nèi)存(一般4 bytes)。 如果你寫的是 int a = 10; 含義和前面一樣,只不過你讓它的初始值為10。 你寫的"hello world"幾個字也是被存在某塊內(nèi)存中的,當(dāng)然可以打印出來,你自然也不用特意為他們new一塊內(nèi)存。 你在定義變量的時候,就已經(jīng)分配給它們內(nèi)存了。 如回答中所說,定義在函數(shù)中的變量會隨函數(shù)的結(jié)束而銷毀,當(dāng)你需要一個變量一直存在,或者就是想要一塊額外內(nèi)存的時候,才用new。
  • 爲(wèi)吾之夢想
    爲(wèi)吾之夢想
    謝謝你的回答 懂了
?
dxyz

TA貢獻14條經(jīng)驗 獲得超1個贊

*號那個應(yīng)該是指針變量吧?沒學(xué)過啊,圍觀一下吧。

查看完整回答
反對 回復(fù) 2016-06-02
?
慕粉3187274

TA貢獻18條經(jīng)驗 獲得超13個贊

目前的情況下 new申請空間一般不會失敗,那個錯誤處理也是為了以防萬一用的 要么你就在try塊里自己扔出一個異常來模擬一下

查看完整回答
反對 回復(fù) 2016-06-02
  • 3 回答
  • 0 關(guān)注
  • 1885 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號