線程的堆棧結構詳解

每當創建一個線程的時候,系統會爲現成的堆棧保留一個堆棧空間區域,並將一些物理存儲器提交給這個區域,按照默認設置,系統保留1MB的地址空間,並提交兩個頁面,爲什麼初始是2個頁面,接下來會有說明
win2000及以上的系統版本
首先,線程的堆棧去剛剛創建時是這樣的
這裏寫圖片描述
我們看到系統爲堆棧分配的地址空間的範圍爲0x08001000-0x080FF000
當然這個地址是隨機的,但是,一般大小是確定的,如果不設置就爲1MB,否則就是設置的大小
這裏我們就有疑問,0x08000000爲什麼不算進去呢,這就是windows的高明之處,爲了防止堆棧溢出,破壞其他堆棧的數據,設置了一個頁面的緩衝區,其實也就是隔離
這裏寫圖片描述
流程過程中,堆棧是這樣的
這裏寫圖片描述
當流程結束之後,堆棧情況是這樣的
這裏寫圖片描述

但是windows98跟windows2000完全不一樣
windows98 的堆棧的頂部和底部都有16頁的緩衝頁面
這裏寫圖片描述

工作過程
這裏寫圖片描述

當堆棧填滿時是這樣的
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章