奇怪的std :: bad_alloc

病毒

据我所知,可以引发std :: bad_alloc的原因有三个:

  1. 该进程请求的内存超出了可服务的范围
  2. 地址空间过于分散,无法满足大块连续内存的请求
  3. 堆管理数据结构已损坏

我们有运行到std :: bad_alloc的代码,但是上述原因似乎都不适用。数据结构是存储为顶点的std :: list的图形,其中每个顶点再次存储作为其一部分的边的std :: list以及一定数量的连续数据。

对于小图(<= 100'000个顶点),该程序运行得非常好,而不管每个顶点的数据段有多大(我们可以毫无问题地分配总计40 GB的内存)。但是,如果顶点数量增加,即使在仅使用8 GB内存的实例上,也会引发std :: bad_alloc异常。

由于在较大的块中分配更多的内存时没有问题,因此应排除上述原因1.和2.。在某些部分中,我们以容易出错的方式处理指针,因此有可能破坏堆数据结构。但是,当在较小的实例上运行时,valgrind的memcheck报告我们的代码无缺陷,因此原因似乎也不大可能(在抛出实例时,valgrind本身会耗尽内存,因此我们无法直接检查该情况)。

是否有其他想法可能是造成这种现象的原因,或者我们可能会进行哪些测试以进一步解决问题?

操作系统:Fedora 19
构建系统:带gcc 4.8.2的cmake

tvar0g

我无法对您的信息发表评论,因此将其回复。

我在将OpenFST与Kaldi一起使用时遇到了相同的问题(与您的系统和gcc相同)。我没有跟踪此问题的确切来历,但似乎内核3.12就是这里的问题。我启动了其中一个备份内核(3.11系列之一),问题消失了。

您可以使用:

yum list --showduplicates kernel

查找可用的3.11内核。

编辑:

看来,此错误已在内核3.12.11-201和3.13+中修复

资料来源:Bugzilla

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++奇怪的std :: bad_alloc异常

来自分类Dev

已经创建的向量中的奇怪std :: bad_alloc

来自分类Dev

C ++ std :: bad_alloc错误

来自分类Dev

C ++ std :: bad_alloc错误

来自分类Dev

C ++向量std :: bad_alloc错误

来自分类Dev

如何修复“std::bad_alloc”

来自分类Dev

如果我得到std :: bad_alloc怎么办?

来自分类Dev

大数据集的dijkstra计算期间的std :: bad_alloc

来自分类Dev

如果我得到std :: bad_alloc怎么办?

来自分类Dev

错误更改/ usr /权限后的'std :: bad_alloc'

来自分类Dev

'new'导致std :: bad_alloc在相对不大的分配上

来自分类Dev

级联两个向量时的std :: bad_alloc

来自分类Dev

程序中的 C++ 向量 std::bad_alloc 错误

来自分类Dev

CPP - 未处理的异常 std::bad_alloc

来自分类Dev

Node.js错误“抛出'std :: bad_alloc'what():std :: bad_alloc实例后调用终止”

来自分类Dev

将opencv :: Mat转换为std :: string会得到std :: bad_alloc

来自分类Dev

当分配超出限制的对象时,Clang无法抛出std :: bad_alloc

来自分类Dev

std :: bad_alloc在内存位置0x002b123c

来自分类Dev

异常:内存位置0x00e4df90上的std :: bad_alloc

来自分类Dev

为什么在抛出'std :: bad_alloc'实例后终止调用?

来自分类Dev

另一个std :: bad_alloc在内存位置

来自分类Dev

std :: bad_alloc在内存位置0x002b123c

来自分类Dev

带有QVector的bad_alloc但不带有std :: vector

来自分类Dev

当分配超出限制的对象时,Clang无法引发std :: bad_alloc

来自分类Dev

为什么返回vector <string>会抛出std :: bad_alloc异常?

来自分类Dev

std :: bad_alloc导致线程成员函数和mex文件崩溃

来自分类Dev

一段时间后获取std :: bad_alloc

来自分类Dev

附加 std 字符串时出现 bad_alloc 异常

来自分类Dev

抛出'std::bad_alloc'的实例后调用C++终止

Related 相关文章

  1. 1

    C ++奇怪的std :: bad_alloc异常

  2. 2

    已经创建的向量中的奇怪std :: bad_alloc

  3. 3

    C ++ std :: bad_alloc错误

  4. 4

    C ++ std :: bad_alloc错误

  5. 5

    C ++向量std :: bad_alloc错误

  6. 6

    如何修复“std::bad_alloc”

  7. 7

    如果我得到std :: bad_alloc怎么办?

  8. 8

    大数据集的dijkstra计算期间的std :: bad_alloc

  9. 9

    如果我得到std :: bad_alloc怎么办?

  10. 10

    错误更改/ usr /权限后的'std :: bad_alloc'

  11. 11

    'new'导致std :: bad_alloc在相对不大的分配上

  12. 12

    级联两个向量时的std :: bad_alloc

  13. 13

    程序中的 C++ 向量 std::bad_alloc 错误

  14. 14

    CPP - 未处理的异常 std::bad_alloc

  15. 15

    Node.js错误“抛出'std :: bad_alloc'what():std :: bad_alloc实例后调用终止”

  16. 16

    将opencv :: Mat转换为std :: string会得到std :: bad_alloc

  17. 17

    当分配超出限制的对象时,Clang无法抛出std :: bad_alloc

  18. 18

    std :: bad_alloc在内存位置0x002b123c

  19. 19

    异常:内存位置0x00e4df90上的std :: bad_alloc

  20. 20

    为什么在抛出'std :: bad_alloc'实例后终止调用?

  21. 21

    另一个std :: bad_alloc在内存位置

  22. 22

    std :: bad_alloc在内存位置0x002b123c

  23. 23

    带有QVector的bad_alloc但不带有std :: vector

  24. 24

    当分配超出限制的对象时,Clang无法引发std :: bad_alloc

  25. 25

    为什么返回vector <string>会抛出std :: bad_alloc异常?

  26. 26

    std :: bad_alloc导致线程成员函数和mex文件崩溃

  27. 27

    一段时间后获取std :: bad_alloc

  28. 28

    附加 std 字符串时出现 bad_alloc 异常

  29. 29

    抛出'std::bad_alloc'的实例后调用C++终止

热门标签

归档