1. ホーム
  2. c++

[解決済み] こんなエラーが出るんです。"glibc detected"

2022-01-29 05:21:14

質問

CPPのコードを書き、ubuntuのG++を使用してコンパイルしました。 私のコードを実行すると、すべてがうまくいき、コードはうまく実行され、出力もされますが、終了せず、このエラーが出ます。

 *** glibc detected *** ./a.out: free(): invalid next size (fast): 0x09f931f0 ***
======= バックトレース
/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]です。
メモリマップ: ===================================================================
00219000-0021a000 R-xp 00000000 00:00 0 [VDZO]
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 [ヒープ]。
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 [スタック]。
中止

これはどういうことでしょうか?どうしたら解消されるのでしょうか? mallocもfreeも使っていないし、ただvectorを使っているだけです。

解決方法は?

直接メモリを割り当てていなくても、水面下では vector のコードで、書いてはいけない場所に書いてしまい、メモリの一部を破損してしまった可能性が高いです。最も考えられる理由は、以下の通りです。

  1. 境界外の要素への書き込み
  2. もはや有効でない要素へのポインタ/参照を使用する--より多くの要素を挿入すると、以前の参照が無効になることに注意してください

もちろん、関連するコードを投稿していただかないと、何とも言えません。あるいは バルグラインド をクリックして問題の原因を探ってください。