C错误:数组的大小太大

时间:2018-03-07 18:08:23

标签: c arrays gcc int limits

我试图编译这个C代码:

#define MAX_INT 2147483647

int main()
{
   int vector[MAX_INT];
   return 0;
}

我使用MinGW和MSYS项目提供的C编译器,即MinGW / MSYS。 MinGW编译器是" gcc版本6.3.0(MinGW.org GCC-6.3.0-1)",这是最新版本并且有win32线程模型,而MSYS编译器是" gcc版本3.4.4(特别是msys)"使用posix线程模型。

MAX_INT常量值设置在常量" __ INT_MAX __"由" limits.h"提供。报头中。

如何避免此问题并编译最简单的代码?

1 个答案:

答案 0 :(得分:0)

您的堆栈不会包含数组,这是主要问题。 尝试在编译时使用Increase stack size when compiling with mingw?中建议的以下行设置堆栈大小

gcc -Wl,--stack,N
where N is stack size. E.g. gcc -Wl,--stack,4194304

同样如评论中所述,您可能需要编译64位,并且需要大量RAM或可能需要大页面文件。