1

我需要分配一个非常大的数组有没有办法分配一个没有此类错误的数组?请注意,我有 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 位操作的新解决方案平台*/

4

2 回答 2

3

您正在尝试在 32 位进程中分配 4GB 块。那是不可能的。您被限制在 2GB 和 4GB 之间的可寻址空间,但实际上在单个连续块中可用的空间要少得多。

如果您真的需要在单个阵列中使用如此大的块,那么您将需要切换到 64 位进程。重新考虑你的算法可能是最好的解决方案。

于 2012-04-29T17:03:08.687 回答
0

32 位地址空间可能没有 1GB 的连续可用内存(绝对不是 4GB)。您必须针对 x64 进行编译。

于 2012-04-29T17:03:12.123 回答