How can one increase the maximum size of a stack for C program that has a deep recursive call? Is there any config for the project where one can specify the stack or heap size for executables?
3 Answers
5
votes
1
votes
To expand on the OP's own answer, the following three CMake commands all work for me on Windows with MinGW/GCC (replace <target> with what you entered into add_executable()):
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")
According to the CMake documentation, each of these should just add linker flags, not replace any that are already set.
In Visual Studio, you should replace -Wl,--stack, with /STACK: in each of these according to this thread and others. For example:
target_link_libraries(<target> PRIVATE "/STACK:10000000")
1
votes
To check initial stack size
peflags -x <binary>
to set size
peflags -x<size> <binary>
As reference peflags --help and
https://cygwin.com/ml/cygwin/2013-08/msg00318.html
getrlimit/setrlimit, so I suggest giving it a try. - Paul RkStackSizeof course - how much stack space do you think that your program needs ? - Paul R