c++ - 0x771515ee 处未处理的异常 Microsoft C++ 异常:内存位置 0x0049f904 处的 std::bad_alloc

标签 c++

我需要分配一个非常大的数组,有没有办法分配一个数组而不会出现此类错误?请注意,我有 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/

相关文章:

c++ - 像素距离取决于轮廓

c++ - 即使使用 ##__VA_ARGS__ 也无法编译具有零参数的可变参数宏

由 C++ istringstream

c++ - 从成员函数返回字符串指针

c++ - 连续捕获 UIView 到纹理

c++ - 不调用部分专用模板类(用于容器类类型)

c++程序编译错误,找不到/访问文件

c++ - std::thread 通过引用传递调用复制构造函数

c++ - 具有多个参数的 Map.emplace C++ 17

c++ - 如何使用 VTK 连接网格上的 LookupTable