默认堆栈大小

Ton*_*ous 6 c c++ windows arrays codeblocks

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

我读过这篇文章,它说 VS 中的默认堆栈大小是 1MB。现在就我而言,它与 VS 无关,堆栈大小取决于操作系统。在我的 win10 情况下,它是 1MB。

这 似乎有点过时,如下所示:project->build options->linker settings->other linker options不再存在。

项目栏下没有构建。

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

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

And*_*ers 5

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

从MSDN:

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

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

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

  • 这个答案中没有任何内容与此相矛盾。在 Windows 操作系统上,此特定标头用于指定堆栈大小。只有 Windows 使用 PE 文件作为其二进制文件,因此其他操作系统的行为会有所不同。 (3认同)