課程
/后端開發(fā)
/C++
/C++遠(yuǎn)征之封裝篇(上)
既然棧區(qū)的內(nèi)存是自動(dòng)管理的,那什么情況下需要使用堆區(qū)呢,都使用堆區(qū)不好嗎
2018-10-10
源自:C++遠(yuǎn)征之封裝篇(上) 6-1
正在回答
這里要提到數(shù)據(jù)結(jié)構(gòu)中棧和堆的區(qū)別,棧是一種線性數(shù)據(jù)結(jié)構(gòu),管理比較簡單,后入先出,而堆是一種樹形結(jié)構(gòu),在處理優(yōu)先級事件上具有較大優(yōu)勢;棧中創(chuàng)建對象是由編譯器為對象在棧空間中分配內(nèi)存,函數(shù)執(zhí)行結(jié)束即自動(dòng)銷毀,無法進(jìn)行有效管理;而使用堆建立類對象,會(huì)在棧中保留指向該對象的指針,堆中通常保存程序運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的對象,C++堆中存放的對象需要由程序員分配釋放,它存在程序運(yùn)行的整個(gè)生命期,直到程序結(jié)束由OS釋放。而java中對象的創(chuàng)建默認(rèn)是存放在堆中,也不需要程序員主動(dòng)釋放內(nèi)存,會(huì)有GC垃圾回收機(jī)制進(jìn)行釋放
舉報(bào)
封裝--面向?qū)ο蟮幕?,本教程力求幫助小伙伴們即學(xué)即會(huì)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-10-10
這里要提到數(shù)據(jù)結(jié)構(gòu)中棧和堆的區(qū)別,棧是一種線性數(shù)據(jù)結(jié)構(gòu),管理比較簡單,后入先出,而堆是一種樹形結(jié)構(gòu),在處理優(yōu)先級事件上具有較大優(yōu)勢;棧中創(chuàng)建對象是由編譯器為對象在棧空間中分配內(nèi)存,函數(shù)執(zhí)行結(jié)束即自動(dòng)銷毀,無法進(jìn)行有效管理;而使用堆建立類對象,會(huì)在棧中保留指向該對象的指針,堆中通常保存程序運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建的對象,C++堆中存放的對象需要由程序員分配釋放,它存在程序運(yùn)行的整個(gè)生命期,直到程序結(jié)束由OS釋放。而java中對象的創(chuàng)建默認(rèn)是存放在堆中,也不需要程序員主動(dòng)釋放內(nèi)存,會(huì)有GC垃圾回收機(jī)制進(jìn)行釋放