【发布时间】:2013-09-15 14:42:40
【问题描述】:
我搜索了著名的“std::bad_alloc”错误,但找不到像我这样的案例。 我已经在 c++ 中实现了一个代码(准确地说:在 Win 7 Prof. 中使用 Eclipse 在 MinGW 中运行)并且代码对于少量的类实例运行良好,但是当类实例的数量超过 10509 时,错误来自windows 出现,然后 eclipse 显示 'std::bad_alloc' 错误。 我正在使用“new”来构建新的类实例,每个类都需要两个指针和三个“long int”、“string”和“int”类型的变量。 我无法解构之前构建的任何实例,因为稍后我需要将它们作为节点在程序的其他部分进行评估。但是,无论如何我已经将类解构器添加到类定义中,并且它们确实设置正确。 我确定程序何时以及通过哪个命令停止,这恰好是在尝试添加第 10510 个类实例时构建 10509 个类实例之后。
所以我想知道是否可以扩展保留的内存来分配新的类实例?
代码太长,这里就不贴了。 感谢您的帮助!
【问题讨论】:
-
如果可能,请使用 pastebin.com 粘贴代码。
-
另外请注意,如果您提出一般性问题并且无法发布详细信息,那么您的问题可能不适合 Stack Overflow。它可能“过于宽泛”或需要“基于意见”的答案。
-
请注意,虽然抛出 std::bad_alloc 的典型原因是内存耗尽,但如果堆使用的数据结构已损坏(例如,被野内存覆盖),也可能发生这种情况,例如堆的分配器函数被愚弄认为内存无法分配。如果是这种情况,那么解决方案是调试在抛出 bad_alloc 之前执行的代码,以便堆数据结构不会损坏。
标签: c++ class memory-management mingw bad-alloc