c++ - 我收到此错误 : "glibc detected"

标签 c++ memory vector g++ glibc

我刚刚写了一段 CPP 代码,并在 ubuntu 中使用 G++ 编译了它。 当我运行我的代码时,一切都很好,代码运行良好并提供输出但不退出并出现此错误:

 *** glibc detected *** ./a.out: free(): invalid next size (fast): 0x09f931f0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c501)[0x3de501]
/lib/libc.so.6(+0x6dd70)[0x3dfd70]
/lib/libc.so.6(cfree+0x6d)[0x3e2e5d]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x6e2441]
./a.out[0x8049ce6]
/lib/libc.so.6(+0x2f69e)[0x3a169e]
/lib/libc.so.6(+0x2f70f)[0x3a170f]
/lib/libc.so.6(__libc_start_main+0xef)[0x388cef]
./a.out[0x8048a61]
======= Memory map: ========
00219000-0021a000 r-xp 00000000 00:00 0          [vdso]
00354000-00370000 r-xp 00000000 08:01 8781845    /lib/ld-2.12.1.so
00370000-00371000 r--p 0001b000 08:01 8781845    /lib/ld-2.12.1.so
00371000-00372000 rw-p 0001c000 08:01 8781845    /lib/ld-2.12.1.so
00372000-004c9000 r-xp 00000000 08:01 8781869    /lib/libc-2.12.1.so
004c9000-004ca000 ---p 00157000 08:01 8781869    /lib/libc-2.12.1.so
004ca000-004cc000 r--p 00157000 08:01 8781869    /lib/libc-2.12.1.so
004cc000-004cd000 rw-p 00159000 08:01 8781869    /lib/libc-2.12.1.so
004cd000-004d0000 rw-p 00000000 00:00 0 
00638000-00717000 r-xp 00000000 08:01 3935829    /usr/lib/libstdc++.so.6.0.14
00717000-0071b000 r--p 000de000 08:01 3935829    /usr/lib/libstdc++.so.6.0.14
0071b000-0071c000 rw-p 000e2000 08:01 3935829    /usr/lib/libstdc++.so.6.0.14
0071c000-00723000 rw-p 00000000 00:00 0 
00909000-0092d000 r-xp 00000000 08:01 8781918    /lib/libm-2.12.1.so
0092d000-0092e000 r--p 00023000 08:01 8781918    /lib/libm-2.12.1.so
0092e000-0092f000 rw-p 00024000 08:01 8781918    /lib/libm-2.12.1.so
00fdb000-00ff5000 r-xp 00000000 08:01 8781903    /lib/libgcc_s.so.1
00ff5000-00ff6000 r--p 00019000 08:01 8781903    /lib/libgcc_s.so.1
00ff6000-00ff7000 rw-p 0001a000 08:01 8781903    /lib/libgcc_s.so.1
08048000-0804b000 r-xp 00000000 08:01 8652645    /home/akg/Desktop/contest/a.out
0804b000-0804c000 r--p 00002000 08:01 8652645    /home/akg/Desktop/contest/a.out
0804c000-0804d000 rw-p 00003000 08:01 8652645    /home/akg/Desktop/contest/a.out
09f93000-09fb4000 rw-p 00000000 00:00 0          [heap]
b7600000-b7621000 rw-p 00000000 00:00 0 
b7621000-b7700000 ---p 00000000 00:00 0 
b7765000-b7768000 rw-p 00000000 00:00 0 
b7775000-b7779000 rw-p 00000000 00:00 0 
bf9a7000-bf9c8000 rw-p 00000000 00:00 0          [stack]
Aborted

这是什么意思?我怎样才能摆脱它? 我没有使用 malloc 或 free ,我只是使用 vector !

最佳答案

即使您不直接分配内存,它也发生在 vector 代码的底层,并且您很可能通过在不应该写入的地方损坏了某些内存。我能想到的最可能的原因是:

  1. 写入超出范围的元素
  2. 对不再有效的元素使用指针/引用 - 请注意,插入更多元素会使之前的引用无效

当然,除非您发布一些相关代码,否则我不能肯定地说。或尝试使用 valgrind找出问题的根源。

关于c++ - 我收到此错误 : "glibc detected",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899582/

相关文章:

c - C 中以前的声明是否改变了指针的初始化方式?

c++ - 覆盖 vector C++

r - 在 R 中获取数字序列的所有拆分

Clojure 中的向量与向量

java - Java的Runtime.maxMemory()什么时候会返回Long.MAX_VALUE?

c++ - '*' 标记之前的预期主表达式

c# - 在 C# 中调用 C++ 库

c++ - 为什么我不能在CGAL中加分

c - 指数问题及其 C 表示

c++ - MFC:为什么加速器不起作用?