首页 >后端开发 >C++ >如何增加 Linux 中 GCC C 应用程序的堆栈大小?

如何增加 Linux 中 GCC C 应用程序的堆栈大小?

Patricia Arquette
Patricia Arquette原创
2024-12-26 09:02:10773浏览

How to Increase the Stack Size for GCC C   Applications in Linux?

在 Linux 中增加 GCC C 应用程序的堆栈大小

在 Linux 中,增加使用 GNU 编译的 C 应用程序的堆栈大小与到 macOS。 OSX 支持 LD_FLAGS 选项,而 Linux 不支持。

要使用 GCC 增加 Linux 中单个应用程序的堆栈大小,您可以使用 setrlimit 函数,如下所示:

#include <sys/resource.h>

int main (int argc, char **argv)
{
    const rlim_t kStackSize = 16 * 1024 * 1024;   // min stack size = 16 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;
}

注意: 即使使用这种方法,也避免直接在 main() 中声明大型局部变量。相反,应在成功调整堆栈大小后调用的函数中定义此类变量。这可以防止在 main() 中大小更改生效之前堆栈溢出。

以上是如何增加 Linux 中 GCC C 应用程序的堆栈大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn