1. 程式人生 > >內存布局------c++程序設計基礎、編程抽象與算法策略

內存布局------c++程序設計基礎、編程抽象與算法策略

棧幀 如何 post 內存 class 靜態區 內存區域 ati ima

技術分享圖片

  圖中給出了在一個典型c++程序中如何組織內存的框架。程序中的指令(在底層都是按位存儲的)和全局變量往往被存儲在靜態去(static area),該區域位於地址編址號較小的接近機器地址空間的開始處。該區域所分配的內存量在程序運行期間不會發生改變。

  內存中的最高地址區表示棧區(stack area)。當你的程序每調用一個函數或者方法,計算機就會在這個內存區創建一個新的棧幀。當函數返回時,所創建的棧幀會被撤銷,以為後續的函數調用所需的棧幀釋放內存。

  處於棧區和靜態區之間的內存區域被稱為堆區(heap area)。該區域會在程序運行時請求更多內存的時候發揮作用。

內聯函數的臨時變量存在main的棧上,相當於main的臨時變量。

c++程序設計基礎、編程抽象與算法策略

內存布局------c++程序設計基礎、編程抽象與算法策略