增加 Clion 中 C 程序的堆栈大小
Increasing stack size for C program in Clion
对于具有深度递归调用的 C 程序,如何增加堆栈的最大大小?项目是否有任何配置可以指定可执行文件的堆栈或堆大小?
检查初始堆栈大小
peflags -x <binary>
设置尺寸
peflags -x<size> <binary>
作为参考 peflags --help
和
https://cygwin.com/ml/cygwin/2013-08/msg00318.html
我通过在项目的 CMakeList.txt
中添加以下链接器标志解决了这个问题
MATH(EXPR stack_size "16 * 1024 * 1024") # 16 Mb
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,${stack_size}")
为了扩展 OP 自己的答案,以下三个 CMake 命令都适用于 Windows 和 MinGW/GCC(将 <target>
替换为您在 [=15= 中输入的内容]):
target_link_libraries(<target> PRIVATE "-Wl,--stack,10000000")
或
set_target_properties(<target> PROPERTIES LINK_FLAGS -Wl,--stack,10000000)
或
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,10000000")
根据 CMake documentation,这些中的每一个都应该只添加链接器标志,而不是替换任何已经设置的。
在 Visual Studio 中,您应该根据 this thread 和其他人,将每个中的 -Wl,--stack,
替换为 /STACK:
。例如:
target_link_libraries(<target> PRIVATE "/STACK:10000000")
对于具有深度递归调用的 C 程序,如何增加堆栈的最大大小?项目是否有任何配置可以指定可执行文件的堆栈或堆大小?
检查初始堆栈大小
peflags -x <binary>
设置尺寸
peflags -x<size> <binary>
作为参考 peflags --help
和
https://cygwin.com/ml/cygwin/2013-08/msg00318.html
我通过在项目的 CMakeList.txt
MATH(EXPR stack_size "16 * 1024 * 1024") # 16 Mb
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,${stack_size}")
为了扩展 OP 自己的答案,以下三个 CMake 命令都适用于 Windows 和 MinGW/GCC(将 <target>
替换为您在 [=15= 中输入的内容]):
target_link_libraries(<target> PRIVATE "-Wl,--stack,10000000")
或
set_target_properties(<target> PROPERTIES LINK_FLAGS -Wl,--stack,10000000)
或
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,10000000")
根据 CMake documentation,这些中的每一个都应该只添加链接器标志,而不是替换任何已经设置的。
在 Visual Studio 中,您应该根据 this thread 和其他人,将每个中的 -Wl,--stack,
替换为 /STACK:
。例如:
target_link_libraries(<target> PRIVATE "/STACK:10000000")