c++ - 默认堆栈大小

标签 c++ c arrays windows codeblocks

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

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

This以下内容似乎有点过时:project->build options->linker settings->other linker options doesn't exist no more.

项目栏下没有构建。

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

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

最佳答案

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

来自 MSDN :

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

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

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

关于c++ - 默认堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420727/

相关文章:

c++ - 使用 SSE 内在函数将 boolean 数组(8 字节 boolean )转换为 int 或 char

c++ - 如何计算两个圆相交的面积?

c - C.fgets中的简单网络服务器导致无限循环读取浏览器请求

C程序打印文件中的第一行和最后n行,我做错了什么?

c - 使用线程安全库

javascript - Angularjs 连接两个对象

c++ - 无法在结构中填充 vector

具有相同类名的c++头文件

c++ - ATL CComPtr 附加、分离和析构函数

c - strstr 带有常规 char 数组,而不是字符串