0

我正在尝试创建一个非常大的数组,然后我得到以下错误。

char largearray[1744830451];

警告 LNK4084:总图像大小 1750372352 超过最大值(268435456);图像可能无法运行

有人告诉我可以使用 C-array 而不是 C++ 。我不确定我是否完全理解我朋友的反应。我目前正在使用 Visual Studio 6.0 C++ 。我是否需要让另一个编译器直接执行 C,或者它是一种如何声明需要更改的数组的方法?

如果我需要更改编译器,有人有建议吗?

4

2 回答 2

4

语法意味着数组将char array[size]在编译程序的数据部分中创建,而不是在运行时分配。

Win32 PE 代码不能超过 256MB(根据链接器的错误消息),但您声明的数组长度为 1.6GB。

如果你想要一个 1.6GB 的数组,请使用malloc(并且不要忘记调用free!)

...但是你到底为什么要运行 VC6?

于 2015-07-04T20:26:24.133 回答
0

如果您预先定义了大小,那么您将被限制为堆栈大小(堆栈大小较小但速度更快),因此最好动态定义大小,这意味着您的数据存储在堆中(堆大小较大但有点比堆栈慢)。

看看http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html,它解释了堆栈和堆的区别。

于 2015-07-04T22:12:54.853 回答