double free que je ne comprends pas
Salut tout le monde,
j'ai une jolie erreur de double free que je ne comprends pas :(.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
*** glibc detected *** ./rfana: double free or corruption (out): 0x0804a008 ***
======= Backtrace: =========
/lib/libc.so.6[0xb7e65980]
/lib/libc.so.6(__libc_free+0x89)[0xb7e66fe9]
./rfana[0x8048788]
/lib/libc.so.6(__libc_start_main+0xd8)[0xb7e17838]
./rfana[0x8048671]
======= Memory map: ========
08048000-08049000 r-xp 00000000 03:04 667639 /tmp/aie/coding/rfana/rfana
08049000-0804a000 rw-p 00000000 03:04 667639 /tmp/aie/coding/rfana/rfana
0804a000-0806b000 rw-p 0804a000 00:00 0 [heap]
b7c00000-b7c21000 rw-p b7c00000 00:00 0
b7c21000-b7d00000 ---p b7c21000 00:00 0
b7e01000-b7e02000 rw-p b7e01000 00:00 0
b7e02000-b7f25000 r-xp 00000000 03:04 358628 /lib/libc-2.5.so
b7f25000-b7f27000 r--p 00122000 03:04 358628 /lib/libc-2.5.so
b7f27000-b7f28000 rw-p 00124000 03:04 358628 /lib/libc-2.5.so
b7f28000-b7f2b000 rw-p b7f28000 00:00 0
b7f31000-b7f3b000 r-xp 00000000 03:04 340885 /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1
b7f3b000-b7f3c000 rw-p 00009000 03:04 340885 /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1
b7f3c000-b7f3e000 rw-p b7f3c000 00:00 0
b7f3e000-b7f58000 r-xp 00000000 03:04 358627 /lib/ld-2.5.so
b7f58000-b7f59000 r--p 00019000 03:04 358627 /lib/ld-2.5.so
b7f59000-b7f5a000 rw-p 0001a000 03:04 358627 /lib/ld-2.5.so
bfeca000-bfedf000 rw-p bfeca000 00:00 0 [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0 [vdso]
inserted at counter: 440, value: -1Aborted |
Dans un premier temps, je fais dans un fichier ceci:
Code:
1 2 3
|
buffer = (char*) malloc (sizeof(char)*lSize); |
Puis, je fais un :
Code:
1 2 3 4 5 6 7 8
|
void insertMem(int value){
if((counter_mem+1) >= ((val_realloc)*MEM_REALLOC))
if((memCount = (int*) realloc(memCount, (++val_realloc)*MEM_REALLOC))== NULL)
fprintf(stderr,"\nError realloc");
[...]
} |
Dans mon main, quand je fais un
Code:
1 2 3
|
free(buffer);
free(memCount); |
J'otiens donc le double free exception... pourtant ce sont bien deux zones mémoires différentes :S...
Par contre, quand je fais UNIQUEMENT un:
L'exception n'apparait plus.
Merci beaucoup pour votre aide