Por que usar asprintf () em vez de sprintf ()?

Estou tendo dificuldade em entender por que você precisaria do asprintf. Aqui no manual diz

As funçõesasprintf() evasprintf() são análogos desprintf(3) evsprintf(3), exceto que eles alocam uma cadeia de caracteres grande o suficiente para conter a saída, incluindo o byte nulo de terminação, e retornam um ponteiro para ela através do primeiro argumento. Esse ponteiro deve ser passado parafree(3) para liberar o armazenamento alocado quando não for mais necessário.

Então, aqui está o exemplo que estou tentando entender:

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

Qual é a diferença se o buffer aloca uma string grande o suficiente para dizer char * = (string)

questionAnswers(2)

yourAnswerToTheQuestion