數據結構的堆棧,和內存空間的堆棧有什么區別和關系嗎?
關于數據結構的堆棧,和內存空間的堆棧有什么區別和關系嗎?
慕尼黑8549860
2019-09-10 13:09:30
TA貢獻1868條經驗 獲得超4個贊
在編寫程序時(比如C、C++等),可以簡單地把內存分為三個不同的區域:
1、棧,即我們平常說的堆棧,英文為stack,存放自動變量、函數調用產生的臨時變量等,該內存空間由編譯器自動分配、釋放以及管理,訪問效率高,但不靈活,空間也小。
2、堆,英文為heap,該內存空間需要程序員手動申請、釋放,如C的malloc、free以及C++的new、delete等,平常說的內存泄露就是操作堆引起的,由于需要手動管理,所以訪問效率較低,但可以根據需要靈活使用。
3、靜態存儲區,也是編譯器自動管理的,用于存放全局變量、局部靜態變量等,與棧中變量的區別是在程序運行期間一直保存變量的值。
舉報