在 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中文网其他相关文章!