Bonjour,
memset ne fait pas d'allocation mémoire normalement, est-ce que tu veux vraiment réécrire ton propre memset ou "améliorer" memset ?
Pourquoi ne pas utiliser strlen pour mesure la taille de ta chaîne de caractère plutôt que de la parcourir toi même ?
Si tu ne peux pas utiliser cette fonction, pourquoi ne pas créer une fonction dédiée à cela ?
Sinon tu as trois erreurs avec ton malloc :
- tu alloue mais tu ne libère pas le bloc mémoire anciennement pointé par dest ;
- tu alloues mais tu ne recopie pas les octets de ton ancienne chaine de caractère (ce que tu as alloué a donc une valeur indéterminé) ;
- si tu veux modifier la valeur de dest dans l'appelant, tu dois utiliser un pointeur de pointeur et non un pointeur :
1 2 3 4 5
| void foo(char ** dest)
{
*dest = (char *)malloc(45);
}
foo(&maChaine); |
Partager