我需要分配一个非常大的数组是否有一种方法来分配没有这类错误的数组?请注意,我有8 GB的内存而不使用矢量 这正是错误
Unhandled exception at 0x771515ee in __ Microsoft C++ exception:
std::bad_alloc at memory location 0x0049f904..
这是我代码的一大块
#include<cstdlib>
int main()
{
size_t arraySize =1024*1024*1024;
int *a= new int[arraySize];
for (int i = 0; i < arraySize; i++)
{
a[i] = 3;
}
return 0;
}
/ *感谢大家解决我的问题的方法是用x64位操作创建一个新的解决方案平台* /
答案 0 :(得分:3)
您正尝试在32位进程中分配4GB块。那是不可能的。你被限制在2GB到4GB的可寻址空间之间,但实际上在一个连续的块中可用的更少。
如果您确实需要在单个阵列中使用如此大的块,那么您将需要切换到64位进程。重新考虑您的算法可能是最佳解决方案。
答案 1 :(得分:0)
32位地址空间可能没有1GB的连续内存(绝对不是4GB)。您必须编译为x64。