增加Clion中C程序的堆栈大小

时间:2017-04-10 15:14:38

标签: c windows cygwin clion

如何为具有深度递归调用的C程序增加堆栈的最大大小?是否有项目的配置,可以指定可执行文件的堆栈或堆大小?

3 个答案:

答案 0 :(得分:1)

检查初始堆栈大小

peflags -x <binary>

设置大小

peflags -x<size> <binary>

作为参考peflags --help
https://cygwin.com/ml/cygwin/2013-08/msg00318.html

答案 1 :(得分:1)

我通过在项目的CMakeList.txt

中添加以下链接器标志来解决问题
MATH(EXPR stack_size "16 * 1024 * 1024") # 16 Mb
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,${stack_size}")

答案 2 :(得分:1)

要扩展OP自身的答案,以下三个CMake命令都可以在Windows上使用MinGW / GCC(用您输入的<target>代替add_executable())在我的Windows中运行:

target_link_libraries(<target> PRIVATE "-Wl,--stack,10000000")

OR

set_target_properties(<target> PROPERTIES LINK_FLAGS -Wl,--stack,10000000)

OR

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")