Обнаружен glibc *** ./a.out: free (): неверный указатель: - PullRequest
1 голос
/ 31 июля 2010

когда я скомпилирован (программа на С ++) в Linux, я получаю следующую ошибку, пожалуйста, помогите мне

glibc detected *** ./a.out: free(): invalid pointer:0x0804878d ***
======= Backtrace: =========
/lib/libc.so.6[0xbd5f18]
/lib/libc.so.6(__libc_free+0x79)[0xbd941d]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x3233fe1]
./a.out(__gxx_personality_v0+0x100)[0x8048514]
./a.out(__gxx_personality_v0+0x176)[0x804858a]
/lib/libc.so.6(__libc_start_main+0xdc)[0xb877e4]
./a.out(__gxx_personality_v0+0x5d)[0x8048471]
======= Memory map: ========
00b55000-00b6e000 r-xp 00000000 fd:00 6687029    /lib/ld-2.4.so
00b6e000-00b6f000 r-xp 00018000 fd:00 6687029    /lib/ld-2.4.so
00b6f000-00b70000 rwxp 00019000 fd:00 6687029    /lib/ld-2.4.so
00b72000-00c9e000 r-xp 00000000 fd:00 6687030    /lib/libc-2.4.so
00c9e000-00ca1000 r-xp 0012b000 fd:00 6687030    /lib/libc-2.4.so
00ca1000-00ca2000 rwxp 0012e000 fd:00 6687030    /lib/li

Ответы [ 2 ]

3 голосов
/ 31 июля 2010

Обнаружен glibc * ./a.out: free (): неверный указатель: 0x0804878d *

Это означает, что вы, вероятно, delete da указатель, который не имеетне был создан с new.

Если вам нужна какая-либо полезная помощь, вам действительно следует опубликовать код, который создает эту проблему.

0 голосов
/ 14 июня 2018

Если вы посмотрите на эти две строки трассировки стека, вы увидите, что страница, которая начинается с 0x8048000, должна быть исполняемой (поскольку два адреса на этой странице, 0x8048514 и 0x804858a, отображаются в стеке как адреса возврата).

. / A.out (__ gxx_personality_v0 + 0х100) [0x8048514] ./a.out(__gxx_personality_v0+0x176)[0x804858a]

Адрес, который вы пытаетесь освободить, 0x0804878d, имеет смещение 0x78d на той же странице, поэтому он, вероятно, указывает на код и определенно указывает на страницу, которая является исполняемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...