我正在尝试创建一个非常大的数组,然后我得到以下错误。
char largearray[1744830451];
警告 LNK4084:总图像大小 1750372352 超过最大值(268435456);图像可能无法运行
有人告诉我可以使用 C-array 而不是 C++ 。我不确定我是否完全理解我朋友的反应。我目前正在使用 Visual Studio 6.0 C++ 。我是否需要让另一个编译器直接执行 C,或者它是一种如何声明需要更改的数组的方法?
如果我需要更改编译器,有人有建议吗?
我正在尝试创建一个非常大的数组,然后我得到以下错误。
char largearray[1744830451];
警告 LNK4084:总图像大小 1750372352 超过最大值(268435456);图像可能无法运行
有人告诉我可以使用 C-array 而不是 C++ 。我不确定我是否完全理解我朋友的反应。我目前正在使用 Visual Studio 6.0 C++ 。我是否需要让另一个编译器直接执行 C,或者它是一种如何声明需要更改的数组的方法?
如果我需要更改编译器,有人有建议吗?
语法意味着数组将char array[size]在编译程序的数据部分中创建,而不是在运行时分配。
Win32 PE 代码不能超过 256MB(根据链接器的错误消息),但您声明的数组长度为 1.6GB。
如果你想要一个 1.6GB 的数组,请使用malloc(并且不要忘记调用free!)
...但是你到底为什么要运行 VC6?
如果您预先定义了大小,那么您将被限制为堆栈大小(堆栈大小较小但速度更快),因此最好动态定义大小,这意味着您的数据存储在堆中(堆大小较大但有点比堆栈慢)。
看看http://gribblelab.org/CBootcamp/7_Memory_Stack_vs_Heap.html,它解释了堆栈和堆的区别。