Salut!

J'ai un problème pour lequel j'aurai bien besoin d'un coup de main

Je mets pas le code car il vraiment dégueulasse vous risquez de pas piger grand chose En gros, j'écris un parser. Le probleme est que je ne sais évidemment pas ce que je vais lire...

Pour ca donc, j'utilise une suite de structures placées avec des mallocs. Mon fichier est divisé en 3 sections chacune pouvant avoir une longueur inconnue. J'ai donc commencé avec 3 malloc ayant une taille fixée cohérente. Si durant le parse, je trouve plus qu'attendant je fais un realloc. Il arrive parfois que je doive stocker des chaines de caracteres. Afin de pouvoir prédire la longueur de mes structures facilement, je mets les chaines dans un malloc et je garde le pointeur dans la structure.

Arrivons au probleme! Les deux premieres étapes se passent correctement. Cependant à la troisieme, j'ai un realloc qui me balance un core dump !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
*** glibc detected *** ./prog: malloc(): memory corruption: 0x0804e218 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7ecf1cd]
/lib/tls/i686/cmov/libc.so.6[0xb7ed0115]
/lib/tls/i686/cmov/libc.so.6(__libc_realloc+0xff)[0xb7ed0cdf]
./prog[0x804982d]
./prog[0x804b78e]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xdc)[0xb7e7d8cc]
./prog[0x8048a71]
======= Memory map: ========
08048000-0804d000 r-xp 00000000 16:01 1749898    /home/prog
0804d000-0804e000 rw-p 00005000 16:01 1749898    /home/prog
0804e000-0806f000 rw-p 0804e000 00:00 0          [heap]
b7d00000-b7d21000 rw-p b7d00000 00:00 0 
b7d21000-b7e00000 ---p b7d21000 00:00 0 
b7e52000-b7e5c000 r-xp 00000000 16:01 964784     /lib/libgcc_s.so.1
b7e5c000-b7e5d000 rw-p 00009000 16:01 964784     /lib/libgcc_s.so.1
b7e67000-b7e68000 rw-p b7e67000 00:00 0 
b7e68000-b7f95000 r-xp 00000000 16:01 964792     /lib/tls/i686/cmov/libc-2.4.so
b7f95000-b7f97000 r--p 0012c000 16:01 964792     /lib/tls/i686/cmov/libc-2.4.so
b7f97000-b7f99000 rw-p 0012e000 16:01 964792     /lib/tls/i686/cmov/libc-2.4.so
b7f99000-b7f9c000 rw-p b7fAbandon (core dumped)
Ces problemes sont arrivés par le fait que j'ai remarqué que mes structures commencaient à empieter sur les strings stockés avec des malloc. Apres avoir vérifié mes pointeurs, ceux-ci pointaient correctement sauf qu'au bout d'un certain temps ils finissent par écraser les premiers strings enregistrés... J'ai donc vérifié mes realloc pour m'assurer qu'ils étaient corrects. Après avoir tout recalculé, j'obtient le core dump


Help ? :p