默认堆栈大小

时间:2017-02-23 16:05:46

标签: c++ c arrays windows codeblocks

如何在Code :: Blocks中增加堆栈大小?

我已阅读this,并说VS中的默认堆栈大小为1MB。现在就我而言,它与VS无关,而且堆栈大小与操作系统有关。在我的win10案例中它是1MB。

This似乎有点过时了:project->build options->linker settings->other linker options不再存在。

项目栏下没有构建。

无论如何,我需要增加堆栈大小,以便我可以声明一个巨大的二维char数组并从缓存中受益。像arr[1000][1000]一样。因为它将在连续的内存上,而不是char* arr[100],它将指向包含1000个字节的1000个不同的内存地址。

我正在使用Windows 10 mingw编译器。

1 个答案:

答案 0 :(得分:4)

默认大小来自.exe,而不是操作系统。

来自MSDN

  

保留和最初提交的堆栈内存的默认大小   在可执行文件头中指定。

具体而言,堆栈保留和提交大小在PE文件的IMAGE_OPTIONAL_HEADER结构中指定。通常可以使用链接器参数将其设置为特定值。使用MinGW工具链,您可以尝试使用-Wl,--stack,52428800作为gcc参数。您正在使用的IDE中可能存在此选项,只需查找构建和/或链接器设置。

这适用于第一个线程,如果您在调用CreateThread时指定非零值,其他线程可以覆盖默认值。