抛出“bad_alloc”的最常见原因是什么?

时间:2018-06-13 00:43:16

标签: c++ c++11 bad-alloc

是否存在与内存相关的更频繁的错误抛出bad_alloc?我知道这意味着内存分配失败了,但在代码中导致这种情况的最常见错误是什么?

1 个答案:

答案 0 :(得分:5)

编辑:其他评论者指出了一些有趣的场景。为了完整起见,我将它们添加到我的回复中。

案例1:内存不足

我的理解是,只要操作符new和new []无法将内存分配给对象或变量,就会抛出bad_alloc。如果您已经新建了一堆对象并且在它们超出范围之前忘记删除它们(即,您的代码像疯了一样泄漏),就会发生这种情况。

案例2:一举分配大量内存

分配大块内存(如1000 x 1000 x 1000双精度矩阵)可能会失败,因为它需要一个大小的单个块。

可能有几个可用的内存块,但这些内存块都不够大。

案例3:将无效值传递给new []

如果传递负值作为参数,则抛出

bad_alloc。