我需要分配一个非常大的数组,有没有办法分配一个数组而不会出现此类错误?请注意,我有 8 GB 的内存而不使用 vector 这正是错误
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 位操作的新解决方案平台*/
最佳答案
您正在尝试在 32 位进程中分配一个 4GB 的 block 。那是不可能的。您的可寻址空间被限制在 2GB 到 4GB 之间,但实际上单个连续 block 中的可用空间要少得多。
如果您确实需要在单个阵列中使用这么大的 block ,那么您将需要切换到 64 位进程。重新考虑您的算法可能是最佳解决方案。
关于c++ - 0x771515ee 处未处理的异常 Microsoft C++ 异常:内存位置 0x0049f904 处的 std::bad_alloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373997/