C++ windows上的端口getrlimits/setrlimit
我正在寻找在Windows上移植POSIX getrlimits/setrlimit功能的方法 我们的应用程序有时会运行到非常深的递归中,达到默认的堆栈限制,从而导致堆栈溢出 为了避免这种情况,我们编写了以下代码:C++ windows上的端口getrlimits/setrlimit,c++,windows,mingw,porting,C++,Windows,Mingw,Porting,我正在寻找在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,
struct rlimit rl;
int error = getrlimit(RLIMIT_STACK, &rl);
if (!error)
{
rl.rlim_cur = rl.rlim_max;
error = setrlimit(RLIMIT_STACK, &rl);
}
基本上,我们在这里将堆栈限制设置为最大值
现在,我正尝试使用minGW(针对Linux上的Windows交叉编译)将此代码移植到Windows
我四处搜索,但在代码中找不到这样做的方法
我发现的是一个链接器标志“-stack”,可以用作:
mingw32-g++-Wl,--stack,-o file.exe file.c
但从长远来看,我不确定这种用法是否会遇到一些问题(比如为整个应用程序设置堆栈限制,而不是为特定代码设置堆栈限制)
与此解决方案相比,我更喜欢以下解决方案之一:
听起来似乎没有办法通过编程在Windows上设置堆栈大小限制;您需要在实际二进制文件中通过编辑.exe或在编译时执行。谢谢,我将使用编译时标志方式。