Bonsoir,
J'ai un probleme avec un realloc, voici la l'organisation de mon code :
void func2(char *buffer) {
char tab_read[4096];
size_t size;
size = read(fd, tab_read, 4096);
buffer = realloc(buffer, size);
buffer = strncat(buffer, read, size);
[...]
}
void func1(char *buffer) {
[...]
while (1) {
[...]
func2(buffer);
[...]
}
[...]
}
int func() {
char *buffer;
buffer = malloc(sizeof(char *) * 1024);
buffer = memset(buffer, '\0', sizeof(char *) * 1024);
[...]
func1(buffer);
[...];
}
Et donc le probleme est que lorsque je souhaite reallouer, j'obtiens l'erreur suivante avec valgrind :
==19357== Invalid free() / delete / delete[] / realloc()
==19357== at 0x4A08A0E: realloc (vg_replace_malloc.c:662)
[...]
==19357== Invalid read of size 1
==19357== at 0x4A08E64: strncat (mc_replace_strmem.c:304)
[...]
==19357== Process terminating with default action of signal 11 (SIGSEGV)
==19357== Access not within mapped region at address 0x0
==19357== at 0x4A08E64: strncat (mc_replace_strmem.c:304)
Sans valgrind j'ai droit a :
- glibc detected *** ./my_script: malloc(): memory corruption: 0x0000000001323870 ***
Savez-vous comment resoudre ce probleme ?
Je vous remercie d'avance