是否有調用來確定正在運行的線程的堆棧大小?我一直在尋找MSDN線程函數文檔,似乎無法找到一個。Windows上的線程堆棧大小(Visual C++)
10
A
回答
9
雖然沒有直接查找堆棧大小的API,但必須保留連續的虛擬地址空間直到達到最大堆棧大小 - 只是很多空間尚未提交。您可以利用此優勢並撥打VirtualQuery兩個電話。
對於第一次調用,請將堆棧中任何值的地址傳遞給它以獲取承諾堆棧空間的基址和大小(以字節爲單位)。在堆棧向下增長的x86機器上,再次從基址和VirtualQuery中減去大小:這將爲您提供爲堆棧保留的空間大小(假設您當時並不精確地處於堆棧大小的限制範圍內)。總結這兩個自然給你的總堆棧大小。
6
您可以從TEB的Top和Bottom中獲取當前提交的大小。您可以從PE header獲取流程初始保留和提交大小。但是,您無法檢索傳遞給CreateThread的實際大小,也沒有任何API可以從當前堆棧中獲取保留的大小和提交的剩餘大小,請參閱Thread Stack Size。
相關問題
- 1. 最大線程堆棧大小.NET?
- 2. 在Windows上增加堆棧大小(GCC)
- 3. Keil RTX RTOS線程堆棧大小
- 4. 配置boost ::線程堆棧大小
- 5. 安全線程堆棧大小?
- 6. 增加堆棧大小c#
- 7. 線程堆棧大小不匹配本機內存跟蹤線程堆棧大小
- 8. iPhone的輔助線程堆棧大小是否有上限?
- 9. OutOfMemoryException,堆棧大小很大,大量的線程
- 10. 堆棧= java.lang.StackOverflowError的:堆棧大小8MB
- 11. 爲什麼要減小Java JVM線程堆棧的大小?
- 12. Android堆棧大小
- 13. Linux堆棧大小
- 14. 確定線程的堆棧大小和位置
- 15. 在C#中更改堆棧的大小
- 16. 堆棧上EBP寄存器的大小?
- 17. 黑莓手機上的堆棧大小?
- 18. LINQ堆棧大小問題
- 19. 未設置線程堆棧大小;安裝彈性搜索
- 20. 如何查看Windows線程溢出時的當前堆棧大小
- 21. 通過線程例程多個變量和堆棧大小
- 22. 在C中檢查堆棧大小#
- 23. C++ vs2010增加堆棧大小
- 24. 如何獲得現有.NET線程的堆棧大小
- 25. 線程堆和堆棧
- 26. 線程的奇怪堆棧
- 27. 增加AsyncTask堆棧大小?
- 28. Android後退堆棧大小
- 29. 增加堆棧大小
- 30. 遞歸堆棧大小?
更多的信息在這裏:http://stackoverflow.com/questions/1740888/determining-stack-space-with-visual-studio/1747499#1747499 – Philip 2011-09-22 19:49:44