是否存在与内存相关的更常见的错误,该错误引发bad_alloc?我知道这意味着内存分配失败,但是导致此错误的最常见错误是什么?

最佳答案

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

情况1:内存不足

我的理解是,只要运算符new和new []未能将内存分配给对象或变量,就会抛出bad_alloc。如果您更新了一堆对象并忘记在它们超出作用域之前将其删除(即,您的代码泄漏疯狂),则可能会发生这种情况。
情况2:一口气分配大量内存
如在1000 x 1000 x 1000 double矩阵的情况下,分配大块内存可能会失败,因为它需要单个大小的块。

可能有几个可用的内存块,但是没有一个足够大。

情况3:将无效值传递给new []

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

08-19 20:16