Bonjour ,
j’ai à l’execution d’un programme utilisant realloc une erreur à l’execution… le programme (très bête c’est juste un test, pour vous montrer) :
void test(){
char*s=malloc(sizeof(char));
int i=0;
while(i<25){
s=realloc(s,sizeof(char)*strlen("hello!\n"));
strcat(s,"hello!\n"); // strcat(s1,s2) -> concatene s2 a la fin de s1, s1 est renvoyée
i++; //i++;
}
printf("%s\n",s);
}
voici l’erreur à l’execution :
*** glibc detected *** ./prg: realloc(): invalid pointer: 0x08049c7c ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(realloc+0x39c)[0xb7e829ec]
/lib/tls/i686/cmov/libc.so.6(realloc+0x3c)[0xb7e8268c]
./prg[0x80488b6]
./prg[0x8048a1d]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe0)[0xb7e29450]
./prg[0x8048551]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:06 2007706 /home/user/C/prg
08049000-0804a000 rw-p 00000000 08:06 2007706 /home/user/C/prg
0804a000-0806b000 rw-p 0804a000 00:00 0 [heap]
b7e07000-b7e11000 r-xp 00000000 08:06 3694604 /lib/libgcc_s.so.1
b7e11000-b7e12000 rw-p 0000a000 08:06 3694604 /lib/libgcc_s.so.1
b7e12000-b7e13000 rw-p b7e12000 00:00 0
b7e13000-b7f5c000 r-xp 00000000 08:06 3712011 /lib/tls/i686/cmov/libc-2.7.so
b7f5c000-b7f5d000 r--p 00149000 08:06 3712011 /lib/tls/i686/cmov/libc-2.7.so
b7f5d000-b7f5f000 rw-p 0014a000 08:06 3712011 /lib/tls/i686/cmov/libc-2.7.so
b7f5f000-b7f62000 rw-p b7f5f000 00:00 0
b7f6e000-b7f70000 rw-p b7f6e000 00:00 0
b7f70000-b7f71000 r-xp b7f70000 00:00 0 [vdso]
b7f71000-b7f8b000 r-xp 00000000 08:06 3694661 /lib/ld-2.7.so
b7f8b000-b7f8d000 rw-p 00019000 08:06 3694661 /lib/ld-2.7.so
bfd98000-bfdad000 rw-p bffeb000 00:00 0 [stack]
Abandon
Voila, je ne comprends pas donc si qqun s’est déjà trouvé devant ce problème peut-être aura-t-il une réponse.
Merci.
OK bon en fait cela a à voir avec la valeur du caractere ‘\n’
Désolé de ne pas y avoir penser avant de poster , vous pouvez supprimer.
merci
Edité le 09/11/2008 à 18:47