我正在寻找一种在 Windows 上移植 POSIX getrlimits/setrlimit 功能的方法。
我们的应用程序有时会遇到非常深的递归,并且达到默认堆栈限制,导致堆栈溢出。
为了防止这种情况,我们编写了以下代码:
struct rlimit rl;
int error = getrlimit(RLIMIT_STACK, &rl);
if (!error)
{
rl.rlim_cur = rl.rlim_max;
error = setrlimit(RLIMIT_STACK, &rl);
}
基本上我们在这里将堆栈限制设置为最大值。
现在我尝试使用 minGW 将此代码移植到 Windows(在 Linux 上为 Windows 进行交叉编译)
我四处搜索,但找不到从代码中执行此操作的方法。
我发现的是一个链接器标志“--stack”,可以用作:
mingw32-g++ -Wl,--stack, -o file.exe file.c
但我不确定长期运行时是否会遇到这种用法的一些问题(例如为整个应用程序设置堆栈限制与为特定代码段设置堆栈限制)
与此解决方案相比,我更喜欢以下解决方案之一:
- 一种独立于平台的方式来设置堆栈限制或
- 一种从代码内设置 Window 堆栈限制的方法。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)