Что означает эта карта памяти при компиляции моей программы?

Я использую 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

Если вы знаете, как я могу выяснить, в чем проблема, или хотя бы объяснить мне, что означает карта памяти, это было бы здорово.
Заранее спасибо.

1

Решение

Карта памяти говорит вам, что ваш процесс потерпел крах. Часть [Backtrace:] сообщает вам трассировку стека (какая функция вызывала какую функцию), когда произошел сбой. Карта памяти показывает, какие данные находятся по каким адресам в вашем процессе.

Как и другие, предложенные в комментариях, скомпилируйте с -g и запустите вашу программу под отладчиком (gdb), чтобы получить лучшую информацию. Так как ваш сбой вызван повреждением кучи, использование инструмента valgrind поможет, поскольку он специализируется на проблемах такого типа.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]