gpt4 book ai didi

stack - 使用 setrlimit 在 Linux 中增加堆栈大小

转载 作者:行者123 更新时间:2023-12-03 12:10:06 26 4
gpt4 key购买 nike

阅读有关如何为使用 gnu 编译的 c++ 应用程序增加堆栈大小的信息,在编译时,我了解到可以在程序开头使用 setrlimit 来完成。尽管如此,我找不到任何关于如何使用它以及在程序的哪一部分应用它以获得 C++ 程序的 64M 堆栈大小的成功示例,有人可以帮助我吗?

谢谢

最佳答案

通常你会在早期设置堆栈大小,例如,在 main() 的开头。 , 在调用任何其他函数之前。通常逻辑是:

  • 调用 getrlimit 获取当前堆栈大小
  • 如果当前大小 < 所需的堆栈大小,则
  • 调用 setrlimit 将堆栈大小增加到所需大小

  • 在 C 中,可能被编码为这样的:

    #include <sys/resource.h>
    #include <stdio.h>

    int main (int argc, char **argv)
    {
    const rlim_t kStackSize = 64L * 1024L * 1024L; // min stack size = 64 Mb
    struct rlimit rl;
    int result;

    result = getrlimit(RLIMIT_STACK, &rl);
    if (result == 0)
    {
    if (rl.rlim_cur < kStackSize)
    {
    rl.rlim_cur = kStackSize;
    result = setrlimit(RLIMIT_STACK, &rl);
    if (result != 0)
    {
    fprintf(stderr, "setrlimit returned result = %d\n", result);
    }
    }
    }

    // ...

    return 0;
    }

    关于stack - 使用 setrlimit 在 Linux 中增加堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2279052/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com