c++ - Windows 上的端口 getrlimits/setrlimit
问题描述
我正在寻找一种在 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 中设置堆栈限制的方法。
解决方案
推荐阅读
- javascript - 如何避免 toDataURL 在 window.onload 之前执行
- flutter - Flutter SlideTransition 从 Offset OFF SCREEN 开始
- javascript - 我用于触发 IFTTT Webhook 的“iframe”按钮适用于 Chrome,但不适用于 Firefox,是否有更正确/面向未来的方法?
- amazon-web-services - 限制每个 IAM 用户的 S3 数据大小的 AWS 策略
- regex - 正则表达式从不同格式的字符串中查找数字
- python - How to darken the light for the whole scene in PyOpenGL?
- rest - Rest API vs GraphQL - 幂等
- python - lxml 源代码行返回无
- google-sheets - 使用 Google 表格构建动态 Google 搜索链接
- javascript - 将 JSON 中的数组转换为 javascript 中的对象