2010-03-19 11 views

cevap

9

, bitişik sanal adres alanı maksimum yığın boyutuna kadar rezervasyon yaptırılması gerekmektedir - o çok yer henüz tamamlanmış değil, sadece var. Bundan yararlanarak VirtualQuery numarasına iki çağrı yapabilirsiniz. İlk çağrı için

, kararlı yığın alanı, bayt olarak taban adresini ve boyutunu almak için bir yığın üzerinde herhangi bir değer adresini geçmektedir. Yığın aşağıya doğru büyür bir x86 makinede, yine taban adresi ve VirtualQuery dan boyutunu çıkarma: Bu size yığını için ayrılmış alanın boyutunu verecektir (o sırada yığın boyutu sınırı kesin değiliz varsayarak). İkiyi doğal olarak toplamak size toplam yığın boyutunu verir.

+1

Daha fazla bilgiye buradan ulaşabilirsiniz: http://stackoverflow.com/questions/1740888/determining-stack-space-with-visual-studio/1747499#1747499 – Philip

6

Geçerli taahhüt edilen boyutu, Üst ve Alttan TEB'dan alabilirsiniz. İşlemin başlangıç ​​yedeğini alabilir ve boyutlarını PE header'dan gerçekleştirebilirsiniz. Ancak, CreateThread'a aktarılan gerçek boyutları geri yükleyemezsiniz, ya da kalan yığının boyutunu almak veya mevcut yığından taahhüt edilen herhangi bir API yoksa, bkz. Thread Stack Size. doğrudan yığın boyutunu bulmak için bir API yok iken