1. 程式人生 > 其它 >多執行緒第二章

多執行緒第二章

核心棧:每個程序保留在核心記憶體中的記憶體區域,供(核心)內部函式呼叫時使用。

使用者棧:駐留在不受保護(使用者可操作)的使用者記憶體中。

靜態區域:static變數和全域性變數的生命週期是一樣的,從出生到程式結束,二者都放在靜態儲存區。

棧(stack):先進後出,增長方向是從高地址向低地址增長。作用是區域性變數(如函式實參)、函式call堆疊(呼叫函式時的暫存器資訊)每次呼叫函式時,會在棧上新分配一幀,每當函式返回時,再從棧上將此幀移除。

1、ESP(棧頂指標)指向棧最上面一個棧幀的棧頂。

2、EBP(棧底指標)指向棧最上面一個棧幀的底部。

ESP-EBP = 棧的大小

函式內的變數都可以通過EBP加偏移量找到

(PS:很多書上翻譯stack為堆疊,其實把人搞亂了,應該它翻譯成棧)

堆(heap):先進先出,增長方向是從低地址向高地址增長。new,malloc/alloc是在堆上申請記憶體,堆的可用空間遠遠大於棧空間,例如new一個幾十上百M的物件。