【问题标题】:C error: size of array is too largeC 错误:数组的大小太大
【发布时间】:2018-08-15 22:47:43
【问题描述】:

我已尝试编译此 C 代码:

#define MAX_INT 2147483647

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

我正在使用 MinGW 和 MSYS 项目提供的 C 编译器,即 MinGW / MSYS。 MinGW 编译器是“gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)”,是最新版本,有win32线程模型,MSYS 编译器是“gcc version 3.4.4 (msys special)”使用 posix 线程模型。

MAX_INT 常量值设置在“limits.h”头文件提供的常量“__INT_MAX__”中。

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

【问题讨论】:

  • 这是 8 GB 的 ints。你编译为64位吗?你有 8 GB 的内存吗?然后尝试malloc它,因为它肯定不适合堆栈。
  • 请问:您打算如何处理所有这些整数?
  • 没有。我没有那么大的内存。感谢您的澄清。
  • @GracoBabeuf 上面的代码究竟如何帮助您构建 OpenSSH?
  • 那你就不需要了。问题解决了。

标签: c arrays gcc int limits


【解决方案1】:

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

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

同样如 cmets 中所述,您可能必须编译为 64 位,并且需要大量 RAM 或可能需要很大的页面文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 2016-02-23
    • 2011-04-10
    相关资源
    最近更新 更多