Pourquoi utiliser asprintf() au lieu de sprintf()?

Je vais avoir du mal à comprendre pourquoi vous avez besoin de asprintf.
Ici, dans le manuel il est dit

Les fonctions asprintf() et vasprintf() sont des analogues de sprintf(3) et
vsprintf(3), sauf qu'ils allouent une chaîne assez grand pour contenir
la sortie y compris l'octet nul final, et retourne un pointeur
par l'intermédiaire du premier argument. Ce pointeur doit être transmis à
free(3) pour libérer le stockage alloué lorsqu'il n'est plus nécessaire.

Donc, voici l'exemple que j'essaie de comprendre:

asprintf(&buffer, "/bin/echo %s is cool", getenv("USER"));

Quelle est la différence si le tampon alloue une chaîne assez grand vs dire char* = (string)

InformationsquelleAutor Brandon Ling | 2012-10-05