亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

C ++,免費存儲與堆

C ++,免費存儲與堆

C++
莫回無 2019-11-05 16:15:00
new/delete據說動態分配是在免費存儲上進行的,而malloc/free操作則使用堆。在實踐中,我想知道是否存在實際差異。編譯器是否區分這兩個術語?(免費存儲和堆,不是new/malloc)
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

對于C ++,免費存儲和堆之間的區別已成為純粹的概念。就像一個用來收集bug的罐子和一個用來收集cookie的罐子。一種被標記為一種方式,另一種被標記為。此名稱的意思是您切勿將“新”和“刪除”與“ malloc”,“ realloc”或“ free”(或與此相關的位級別集)混合使用。


在采訪中,最好說“ new和delete使用免費存儲,malloc和free使用堆; new和delete分別調用構造函數和析構函數,而malloc和free則不使用?!?但是,您經常會聽到內存段確實在同一區域中-但是,這可能是特定于編譯器的,也就是說,可能兩者都可以將不同的內存空間指定為池(不知道為什么會這樣,雖然)。


查看完整回答
反對 回復 2019-11-05
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

但是實際上,它們幾乎總是相同的內存區域-在大多數情況下,如果深入研究編譯器的實現new,就會發現它稱為malloc()

換句話說:從機器的角度來看,堆和免費存儲是同一回事。區別存在于編譯器內部。

為了使事情更加混亂,在C ++出現之前,我們說過“堆”是指現在所謂的“免費存儲”。


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 434 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號