Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Default stack size

How can I increase the stack size in Code::Blocks?

I've read this and it says default stack size in VS is 1MB. Now as far as I am concerned, it has nothing to do with VS and stack size is OS dependent. In my win10 case it is 1MB.

This seems a little bit outdated as following this: project->build options->linker settings->other linker options doesn't exist no more.

There's no build under project bar.

Anyway, I need to increase my stack size so I can declare a huge two dimensional char array and benefit from cache. Like arr[1000][1000]. As it will be on contiguous memory unlike char* arr[100] which will point to 1000 different memory addresses containing the 1000 bytes.

I'm using Windows 10 mingw compiler.

like image 224
Tony Tannous Avatar asked Feb 23 '17 16:02

Tony Tannous


1 Answers

The default size comes from the .exe, not the OS.

From MSDN:

The default size for the reserved and initially committed stack memory is specified in the executable file header.

Specifically, the stack reserve and commit sizes are specified in the IMAGE_OPTIONAL_HEADER structure in a PE file. This can usually be set to a specific value with a linker parameter. With the MinGW toolchain you can try something like -Wl,--stack,52428800 as a gcc parameter. This option might exist in the IDE you are using, just look for build and/or linker settings.

This applies to the first thread, other threads can override the default if you specify a non-zero value when you call CreateThread.

like image 106
Anders Avatar answered Nov 04 '22 18:11

Anders