簡體   English   中英

glibc檢測到*** ./a.out:free():無效的指針:

[英]glibc detected *** ./a.out: free(): invalid pointer:

當我在linux中編譯(c ++程序)時出現以下錯誤請幫我

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

glibc檢測到* ./a.out:free():無效的指針:0x0804878d *

這意味着您可能會delete尚未使用new創建的da指針。

如果您需要任何有用的幫助,則實際上應該發布生成此問題的代碼。

如果查看堆棧跟蹤的這兩行,您將看到以0x8048000開始的頁面必須是可執行的(因為該頁面中的兩個地址0x8048514和0x804858a在堆棧上顯示為返回地址)。

./a.out(__gxx_personality_v0+0x100)[0x8048514] ./a.out(__gxx_personality_v0+0x176)[0x804858a]

您試圖釋放的地址0x0804878d在同一頁面中的偏移量為0x78d,因此它可能指向代碼,並且絕對指向可執行頁面中的地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM