0x771515ee Microsoft C++异常时未处理的异常:内存位置 0x0049f904 处的 std::ba

Unhandled exception at 0x771515ee Microsoft C++ exception: std::bad_alloc at memory location 0x0049f904

本文关键字:异常 位置 ba 0x0049f904 处的 内存 std Microsoft C++ 未处理 0x771515ee      更新时间:2023-10-16

我需要分配一个非常大的数组 有没有办法分配一个没有这种类型的错误的数组? 请注意,我在不使用矢量的情况下有 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 位操作的新解决方案平台*/

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

如果你真的需要在单个数组中有一个这么大的块,那么你需要切换到一个 64 位进程。重新考虑您的算法可能是最好的解决方案。

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

相关文章: