前置知識——Heap(堆)
? 由用戶主動請求而劃分出來的內存區域,叫做Heap。
由低位地址向高位地址增長
不會自動釋放,必須手動釋放,或者由垃圾回收機制來回收
堆內存和棧內存是什么意思?
在學習C程序設計語言時,會遇到兩個很相似的術語:堆內存和棧內存。這兩個術語雖然只有一字之差,但是所表達的意義還是有差別的,堆內存和棧內存的區別可以用如下的比喻來看出:使用堆內存就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。使用棧內存就象我們去飯館里吃飯,只管點菜(發出申請)、付錢和吃(使用),吃飽了就走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。操作系統中所說的堆內存和棧內存,在操作上有上述的特點,這里的堆內存實際上指的就是(滿足堆內存性質的)優先隊列的一種數據結構,第1個元素有最高的優先權;棧內存實際上就是滿足先進后出的性質的數學或數據結構。