關於 棧 和 堆

2021-08-08 16:57:11 字數 526 閱讀 9576

棧區(stack)—由編譯器自動分配和釋放,申請速度快,但程式設計師無法控制。主要存放函式的引數值、區域性變數等。棧頂位址小於棧的基位址。

堆區(heap) —-由程式設計師分配和釋放,由new和malloc申請,delete和free釋放,分配的記憶體區不一定是連續的,類似鍊錶。若程式設計師不釋放,程式結束是可能由os**。

全域性資料區(static) —儲存全域性變數和靜態變數,即使是函式內部的靜態變數也儲存在此區域,程式結束後由系統釋放。

常量區(constant) —程式中所有常量都存放在這裡,程式結束後由系統釋放。

**區(code) —存放程式的二進位制**。

1、 通過對工程專案的設定,調整棧區的大小。

在vc++2008中可通過如下方式調整,通過project->property->linker->system中調整stack reserve size。

2、 通過動態分配二維資料

動態分配二維資料方法為:

int *a = new int[row];

for(int i=0;i

關於堆和棧

1 記憶體分配方面 堆 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式是類似於鍊錶。可能用到的關鍵字如下 new malloc delete free等等。棧 由編譯器 compiler 自動分配釋放,存放函式的引數值,區域性變數的值等。...

關於堆和棧

網上找到的,有什麼不對的大家指出來,重新學習 1.棧是存放函式返回位址 引數 區域性變數的。堆是程式可以自由操作的記憶體,使用時先申請,用完之後釋放,如何使用完全由程式 控制。2.棧在彙編 中表示成push pop,用的是ess段,sp暫存器 而堆不是,是在記憶體中讀寫,eds段,3.c 包括兩種被...

關於棧和堆

棧區 由程式自動向作業系統申請分配以及 存放函式的引數 區域性變數,當函式呼叫結束時,釋放記憶體。速度快,使用方便。堆區 程式設計師向作業系統申請一塊記憶體,分配速度慢 位址不連續容易碎片化但高度自由。既然是程式設計師申請的,當然是要由程式設計師來銷毀,畢竟做事要有始有終,懂得善後嘛,o o哈哈 注...