为了简单起见,请考虑这个具有3个属性的类。C++异常:std :: bad_alloc
class Human
{
public:
int id;
int age;
std::string name;
};
int main()
{
Human *h = new Human[120000]; <-- breaking
return 0;
}
我得到的错误是在在0x76ACC52F在Human.exe 未处理的异常:微软C++异常:性病:: bad_alloc的内存位置0x000D0EA8。
运行该程序的机器具有32 GB RAM和1 TB硬盘,并且分页打开。人类有大约350个属性。我检查并发现每个Human对象大约需要29000字节。所以总计它应该分配29000 X 120000 = 3.48 GB
我假设这是一个内存问题,程序没有足够的内存来完成新的操作。为什么。 32 GB不是一个小内存。除Visual Studio运行此C++程序外,没有任何其他程序正在运行。
请让我知道你对这个问题的想法和一个可能的解决方案。
非常感谢。
评论不适用于扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/130287/discussion-on-question-by-blue-piranha-c-exception-stdbad-alloc)。 –