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