Я использую g ++ для компиляции своих программ.
Я получаю карту памяти 80% времени, когда я выполняю свою программу. Я не могу понять, что означает карта памяти или как ее решить.
Вот вывод:
*** glibc detected *** ./main: double free or corruption (!prev): 0x0881fdc8 ***
======= Backtrace: =========
[0x80da7f8]
[0x80dec69]
[0x80a5441]
[0x80a546d]
[0x8059227]
[0x8058b2f]
[0x8058f41]
[0x80567ec]
[0x80c075f]
[0x8048191]
======= Memory map: ========
00149000-0014a000 r-xp 00000000 00:00 0 [vdso]
08048000-08165000 r-xp 00000000 08:02 2101716 /home/armandmaree/Desktop/Projek_Fase2 (copy)/main
08166000-08168000 rw-p 0011d000 08:02 2101716 /home/armandmaree/Desktop/Projek_Fase2 (copy)/main
08168000-08170000 rw-p 00000000 00:00 0
09a45000-09a67000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b77e2000-b77e3000 rw-p 00000000 00:00 0
bfc35000-bfc4a000 rw-p 00000000 00:00 0 [stack]
Aborted
Если вы знаете, как я могу выяснить, в чем проблема, или хотя бы объяснить мне, что означает карта памяти, это было бы здорово.
Заранее спасибо.
Карта памяти говорит вам, что ваш процесс потерпел крах. Часть [Backtrace:] сообщает вам трассировку стека (какая функция вызывала какую функцию), когда произошел сбой. Карта памяти показывает, какие данные находятся по каким адресам в вашем процессе.
Как и другие, предложенные в комментариях, скомпилируйте с -g и запустите вашу программу под отладчиком (gdb), чтобы получить лучшую информацию. Так как ваш сбой вызван повреждением кучи, использование инструмента valgrind поможет, поскольку он специализируется на проблемах такого типа.
Других решений пока нет …