我试图编译这个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"提供。报头中。
如何避免此问题并编译最简单的代码?
答案 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或可能需要大页面文件。