【发布时间】:2018-09-19 10:12:55
【问题描述】:
是否有用于 GetCurrentThreadStackLimits 的 windows7 函数,它似乎仅适用于 windows >= 8 ? [1] 和 - 如果不是 - 我如何在 win 7 上获得这些信息?
我需要找到当前线程使用的堆栈大小。 (usedstacksize != maximumstacksize)
谢谢!
PS:这是用于诊断目的。我们需要找到为 stm32 应用程序保留的堆栈大小,我只是想让 pc 模拟也能工作。
[1]:调用函数时程序编译,但在运行时会弹出一个消息框,提示“在 kernel32.dll 中找不到函数入口点”文档指出此函数需要 windows8: https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-getcurrentthreadstacklimits
【问题讨论】:
-
这个问题有点不清楚,至少对我来说。如果你在win7中检查进程的堆栈大小@RbMm回答了它。如果你想写一个模拟器,为什么不创建一个大堆栈(比如说 2MB 或更大),并创建某种页面保护来检测堆栈溢出,如果你确实达到堆栈限制,要么静态地使其更大或动态执行(它会影响性能,但这是您对堆栈实现的选择)。
-
为了找到 stm32 上的最大堆栈大小,您必须计算 stm32 应用程序调用的最大嵌套函数数。如果计算中存在,则必须添加中断的函数调用(如计时器\看门狗)。
标签: c++ c windows winapi stack