使用 GCC 更改 Linux 中 C 应用程序的堆栈大小
在 Linux 中,与 macOS 不同,LD_FLAGS=-Wl,-stack_size 选项为GNU 编译器不识别。要调整单个 C 应用程序的堆栈大小,可以通过编程方式使用 setrlimit 函数。
#include <sys/resource.h> int main() { const rlim_t kStackSize = 16 * 1024 * 1024; // 16 MB struct rlimit rl; int result; // Get current stack size limits result = getrlimit(RLIMIT_STACK, &rl); if (result == 0) { // If current stack size is less than desired, adjust it if (rl.rlim_cur < kStackSize) { rl.rlim_cur = kStackSize; result = setrlimit(RLIMIT_STACK, &rl); if (result != 0) { // Error handling } } } // Your code... return 0; }
实现此解决方案时,至关重要的是将大型局部变量声明放置在从 main() 调用的函数中,而不是比直接在 main() 中。否则,在增加堆栈大小之前可能会发生堆栈溢出。
以上是如何使用 GCC 更改 Linux 中 C 应用程序的堆栈大小?的详细内容。更多信息请关注PHP中文网其他相关文章!