Malloc(): Memory Corruption
-
En kısa yol algoritması uygularken
Sehir1 Sehir2 Mesafe
şeklinde satır satır okuyorum. Her satırı okurken bir pointer arrayi içerisinde sehir yoksa oluşturuyorum struct sehir türünde. Sonra aralarındaki bağlantıları kuruyorum.
En son da dijkstra'nın algoritmasını uyguluyorum.
81 il ile rastgele bir input dosyası oluşturdum 467 satır sıkıntısız buluyor ama 50bin edge ile deneyin diyor hocalar o yüzden 49200 küsür satırlık bir input oluşturdum onda başlıkta yazdığım hatayı veriyor. Bir türlü işin içinden çıkamadım teslime de az kaldı.
Edit: printf ile kontrol etmeye çalışıyorum 467 satırlık olan inputta son satıra kadar okuyor diğerinde 65. satırda hata verip çıkıyor.
*** glibc detected *** ./program: malloc(): memory corruption: 0x08dce350 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ff22)[0xdeaf22]
/lib/i386-linux-gnu/libc.so.6(+0x718be)[0xdec8be]
/lib/i386-linux-gnu/libc.so.6(__libc_malloc+0x68)[0xdee7f8]
./program[0x804869f]
./program[0x80488ce]
./program[0x8048d27]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xd94113]
./program[0x80485b1]
======= Memory map: ========
00110000-0012c000 r-xp 00000000 07:00 131772 /lib/i386-linux-gnu/libgcc_s.so.1
0012c000-0012d000 r--p 0001b000 07:00 131772 /lib/i386-linux-gnu/libgcc_s.so.1
0012d000-0012e000 rw-p 0001c000 07:00 131772 /lib/i386-linux-gnu/libgcc_s.so.1
0013c000-0013d000 r-xp 00000000 00:00 0 [vdso]
0096f000-0098d000 r-xp 00000000 07:00 140256 /lib/i386-linux-gnu/ld-2.13.so
0098d000-0098e000 r--p 0001d000 07:00 140256 /lib/i386-linux-gnu/ld-2.13.so
0098e000-0098f000 rw-p 0001e000 07:00 140256 /lib/i386-linux-gnu/ld-2.13.so
00d7b000-00ef3000 r-xp 00000000 07:00 140259 /lib/i386-linux-gnu/libc-2.13.so
00ef3000-00ef5000 r--p 00178000 07:00 140259 /lib/i386-linux-gnu/libc-2.13.so
00ef5000-00ef6000 rw-p 0017a000 07:00 140259 /lib/i386-linux-gnu/libc-2.13.so
00ef6000-00ef9000 rw-p 00000000 00:00 0
08048000-0804a000 r-xp 00000000 07:00 551350 /home/ultralover/Desktop/the2.jun12/program
0804a000-0804b000 r--p 00001000 07:00 551350 /home/ultralover/Desktop/the2.jun12/program
0804b000-0804c000 rw-p 00002000 07:00 551350 /home/ultralover/Desktop/the2.jun12/program
08dcb000-08dec000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b774e000-b774f000 rw-p 00000000 00:00 0
b775e000-b7762000 rw-p 00000000 00:00 0
bf8e9000-bf90a000 rw-p 00000000 00:00 0 [stack]
Command terminated by signal 6 -
Okuyup işini hallettikten sonra free etmeyi mi unutuyorsun?
-
'\0' için yer almamışım o sorun halloldu bu sefer de dijkstra algoritmasının uygulamasında segmentation fault veriyor ama 81 illi kısa inputta doğru sonucu veriyor. Aklım almıyor.
-
Uplamak istemezdim ama birşey farkettim. Aynı graph içerisinde bazı şehirler arasında hata verirken bazıları arasında vermiyor bakıyorum bakıyorum bir sıkıntı göremiyorum.
