Bonjour,
Voila je vient d'ecrire une fonction toute simple pour un programme C et sa seg fault.
Donc jai utiliser gdb pour savoir se qui se passait et gdb me dit:
Program received signal SIGSEGV, Segmentation fault.
0x400bec1b in free () from /lib/libc.so.6
free() qui seg fault cest bien la premiere fois que sa me le fait.
voila ma fonction (strdup mais qui copie que n caractere de la chaine de depart)
char *strndup(char *str, int n)
{
int i;
int max;
char *new;
if (!str)
return (NULL);
max = (n > strlen(str)) ? (strlen(str)) : (n);
if (!(new = malloc((max + 1) * sizeof(*new))))
return (NULL);
for (i = 0; i < max; i++)
new[i] = str[i];
new[i] = '\0';
return (new);
}
et apres je fait un free(str); dans apres l'apel a cette fonction et la seg fault.
Jai beau regarder ma fonction je voit pas l'erreur.
Si quelqu'un a une idee merci.