多執行緒第二章
阿新 • • 發佈:2021-08-01
核心棧:每個程序保留在核心記憶體中的記憶體區域,供(核心)內部函式呼叫時使用。
使用者棧:駐留在不受保護(使用者可操作)的使用者記憶體中。
靜態區域:static變數和全域性變數的生命週期是一樣的,從出生到程式結束,二者都放在靜態儲存區。
棧(stack):先進後出,增長方向是從高地址向低地址增長。作用是區域性變數(如函式實參)、函式call堆疊(呼叫函式時的暫存器資訊)每次呼叫函式時,會在棧上新分配一幀,每當函式返回時,再從棧上將此幀移除。
1、ESP(棧頂指標)指向棧最上面一個棧幀的棧頂。
2、EBP(棧底指標)指向棧最上面一個棧幀的底部。
ESP-EBP = 棧的大小
函式內的變數都可以通過EBP加偏移量找到
(PS:很多書上翻譯stack為堆疊,其實把人搞亂了,應該它翻譯成棧)
堆(heap):先進先出,增長方向是從低地址向高地址增長。new,malloc/alloc是在堆上申請記憶體,堆的可用空間遠遠大於棧空間,例如new一個幾十上百M的物件。