在進行c++程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別:
棧區:由編譯器自動分配和釋放,存放函式的引數值、區域性變數的值等,其操作的方式類似於資料結構中的棧。
堆區:一般有程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由作業系統收回。主語它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶。
全域性區(靜態變數static):全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的區域性變數和未初始化的靜態變數在相鄰的另一塊區域。程式結束後由系統自動釋放。
文字常量區:常量字串就是放在這裡。程式結束後由系統釋放。
程式**區:存放函式體的二進位製碼。
堆和棧的存放內容
棧存放的是基本資料型別 引用變數名 int a 1 這裡的a和1都存放在棧中 string b abc 這裡只有b存放在棧中,而 abc 則存放在堆中 堆存放的是new出來的物件 上述的string b abc 中,其實b是引用型別,指向 abc 這個字串物件,b存放在棧中,而 abc 這個字串物件...
堆與棧區別
檢視文章 關於記憶體中棧和堆的區別 2008 09 02 17 12 1 記憶體分配方面 堆 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式是類似於鍊錶。可能用到的關鍵字如下 new malloc delete free等等。棧 由編譯器...
堆與棧 佇列
首先,我們舉乙個例子 void f 這條短短的一句話就包含了堆與棧,看到new,我們首先就應該想到,我們分配了一塊堆記憶體,那麼指標p呢?他分配的是一塊棧記憶體,所以這句話的意思就是 在棧記憶體中存放了乙個指向一塊堆記憶體的指標p。在程式會先確定在堆中分配記憶體的大小,然後呼叫operator ne...