windows - Windows 上的线程堆栈大小 (Visual C++)

标签 windows stack stack-size

是否有调用来确定正在运行的线程的堆栈大小?我一直在查看 MSDN 线程函数文档,但似乎找不到。

最佳答案

虽然没有直接找出堆栈大小的 API,但必须保留连续的虚拟地址空间,直到达到最大堆栈大小 - 只是其中很多空间尚未提交。您可以利用这一点并两次调用 VirtualQuery。 .

对于第一次调用,将堆栈上任何值的地址传递给它,以获取已提交堆栈空间的基地址和大小(以字节为单位)。在堆栈向下增长的 x86 机器上,再次从基地址和 VirtualQuery 中减去大小:这将为您提供为堆栈保留的空间大小(假设您当时没有精确地达到堆栈大小的限制).将两者相加自然得出总筹码量。

关于windows - Windows 上的线程堆栈大小 (Visual C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480095/

相关文章:

memory - 溢出主堆栈时的四种不同结果

arrays - 在 Forth 中设置数组元素的问题

c++ - 如何重用在堆栈中创建的对象

linux - 增加堆栈大小

Python 线程堆栈大小和段错误

c++ - 如何将 Windows 事件日志刷新到磁盘?

c - 在命令提示符下生成一个 "readable"退格键

objective-c - NSThread setStackSize 未设置线程的大小

c - fatal error : thread. h:没有那个文件或目录

c# - 异步任务超时