C++ windows上的端口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,

我正在寻找在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(针对Linux上的Windows交叉编译)将此代码移植到Windows

我四处搜索,但在代码中找不到这样做的方法

我发现的是一个链接器标志“-stack”,可以用作:

mingw32-g++-Wl,--stack,-o file.exe file.c

但从长远来看,我不确定这种用法是否会遇到一些问题(比如为整个应用程序设置堆栈限制,而不是为特定代码设置堆栈限制)

与此解决方案相比,我更喜欢以下解决方案之一:

  • 一种与平台无关的设置堆栈限制或
  • 从代码中设置窗口中堆栈限制的方法

  • 听起来似乎没有办法通过编程在Windows上设置堆栈大小限制;您需要在实际二进制文件中通过编辑.exe或在编译时执行。谢谢,我将使用编译时标志方式。