我得到一個錯誤的malloc:我需要幫助時,我跑我的代碼來定位我的malloc錯誤
*** glibc detected *** ./bin/mem: malloc(): memory corruption (fast): 0x000000001951fbd0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x300ac739ac]
/lib64/libc.so.6(__libc_malloc+0x6e)[0x300ac74cde]
/usr/lib64/libstdc++.so.6(_Znwm+0x1d)[0x2af278cad1dd]
./bin/mem[0x40835a]
./bin/mem[0x40837e]
./bin/mem[0x408a86]
./bin/mem[0x405a99]
./bin/mem[0x406148]
./bin/mem[0x42b719]
./bin/mem[0x409a89]
./bin/mem[0x40a522]
./bin/mem[0x40c2d3]
./bin/mem(__gxx_personality_v0+0x2cd)[0x40190d]
./bin/mem(__gxx_personality_v0+0x320)[0x401960]
./bin/mem[0x437f06]
======= Memory map: ========
00400000-00450000 r-xp 00000000 00:17 4160547 /users/avityo/code/mem/src/bin/mem
0064f000-00650000 rw-p 0004f000 00:17 4160547 /users/avityo/code/mem/src/bin/mem
18c1a000-19680000 rw-p 18c1a000 00:00 0 [heap]
300a800000-300a81c000 r-xp 00000000 08:01 3833879 /lib64/ld-2.5.so
300aa1b000-300aa1c000 r--p 0001b000 08:01 3833879 /lib64/ld-2.5.so
300aa1c000-300aa1d000 rw-p 0001c000 08:01 3833879 /lib64/ld-2.5.so
300ac00000-300ad4e000 r-xp 00000000 08:01 3833881 /lib64/libc-2.5.so
300ad4e000-300af4d000 ---p 0014e000 08:01 3833881 /lib64/libc-2.5.so
300af4d000-300af51000 r--p 0014d000 08:01 3833881 /lib64/libc-2.5.so
300af51000-300af52000 rw-p 00151000 08:01 3833881 /lib64/libc-2.5.so
300af52000-300af57000 rw-p 300af52000 00:00 0
300b000000-300b082000 r-xp 00000000 08:01 3834072 /lib64/libm-2.5.so
300b082000-300b281000 ---p 00082000 08:01 3834072 /lib64/libm-2.5.so
300b281000-300b282000 r--p 00081000 08:01 3834072 /lib64/libm-2.5.so
300b282000-300b283000 rw-p 00082000 08:01 3834072 /lib64/libm-2.5.so
2af278bbc000-2af278bbd000 rw-p 2af278bbc000 00:00 0
2af278bef000-2af278bf0000 rw-p 2af278bef000 00:00 0
2af278bf0000-2af278cd6000 r-xp 00000000 08:01 76257864 /usr/lib64/libstdc++.so.6.0.8
2af278cd6000-2af278ed5000 ---p 000e6000 08:01 76257864 /usr/lib64/libstdc++.so.6.0.8
2af278ed5000-2af278edb000 r--p 000e5000 08:01 76257864 /usr/lib64/libstdc++.so.6.0.8
2af278edb000-2af278ede000 rw-p 000eb000 08:01 76257864 /usr/lib64/libstdc++.so.6.0.8
2af278ede000-2af278ef0000 rw-p 2af278ede000 00:00 0
2af278ef0000-2af278efd000 r-xp 00000000 08:01 3833890 /lib64/libgcc_s-4.1.2-20080825.so.1
2af278efd000-2af2790fd000 ---p 0000d000 08:01 3833890 /lib64/libgcc_s-4.1.2-20080825.so.1
2af2790fd000-2af2790fe000 rw-p 0000d000 08:01 3833890 /lib64/libgcc_s-4.1.2-20080825.so.1
2af2790fe000-2af27915e000 rw-p 2af2790fe000 00:00 0
2af27c000000-2af27c021000 rw-p 2af27c000000 00:00 0
2af27c021000-2af280000000 ---p 2af27c021000 00:00 0
7fff2740b000-7fff27420000 rw-p 7ffffffea000 00:00 0 [stack]
ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0 [vdso]
./run: line 6: 2339 Aborted ./bin/mem
我找不到這個錯誤背後的邏輯,它並不總是發生。如何當我遍歷通常爲空的向量列表時,這個錯誤總是出現。我如何理解這一點?
編輯: 我想我找到了。我有一個數據結構(bbPair)和我創建了一個指針:
bbPair * p;
但我沒有new
初始化。難道是因爲內存超出了以前的運行,malloc錯誤是隨機的嗎?
您認真期待我們診斷您的錯誤?也許編程不適合你的職業選擇。 – 2011-05-12 19:19:05
發佈無論你在'std :: vector'上循環的代碼,我們都可以幫助診斷它。 – 2011-05-12 19:23:40
我們可能無法直接回答這個問題,但從這裏我們可以推薦到可以用來幫助解決問題的方法。 – 2011-05-12 22:47:36