Salut tout le monde,

j'ai une jolie erreur de double free que je ne comprends pas .
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
buffer = (char*) malloc (sizeof(char)*lSize);
Puis, je fais un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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