C ++异常:std :: bad_alloc

时间:2016-12-08 17:05:59

标签: c++ memory-management

为简单起见,请考虑此类有3个属性。

class Human
{
   public:
     int id;
     int age;
     std::string name;
};

int main()
{
Human *h = new Human[120000]; <-- breaking
    return 0;
}

我得到的错误是  Human.exe中0x76ACC52F处的未处理异常:Microsoft C ++异常:内存位置0x000D0EA8处的std :: bad_alloc。

运行该程序的机器具有32 GB RAM和1 TB硬盘驱动器,具有分页功能。 Human类有大约350个属性。我检查并发现每个Human对象大约需要29000个字节。总共应该分配29000 X 120000 = 3.48 GB

我假设这是一个内存问题,程序没有足够的内存来完成新操作。为什么呢。 32 GB不是一个小内存。除了运行此C ++程序的Visual Studio之外,没有任何其他程序在运行。

请让我知道你对此事的看法和可能的解决方案。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

因此,如64位编译的注释中所示解决了问题,但您应该使用链表而不是数组,因为它不需要连续的内存块。