Pourquoi le livre dit-il que je dois lancer malloc?

Aujourd’hui, j’ai atteint la page 167 du langage C Programming Language (deuxième édition, Brian W. Kernighan & Dennis M. Ritchie) et j’ai découvert que l’auteur disait que je devais lancer malloc . Voici la partie du livre:

7.8.5 Gestion du stockage

Les fonctions malloc et calloc obtiennent des blocs de mémoire dynamicment.

 void *malloc(size_t n) 

renvoie un pointeur sur n octets de stockage non initialisé ou NULL si la demande ne peut pas être satisfaite.

 void *calloc(size_t n, size_t size) 

renvoie un pointeur sur suffisamment d’espace libre pour un tableau de n objects de la taille spécifiée ou NULL si la requête ne peut pas être satisfaite. Le stockage est initialisé à zéro. Le pointeur renvoyé par malloc ou calloc a le bon alignement pour l’object en question, mais il doit être converti dans le type approprié, comme dans

 int *ip; ip = (int *) calloc(n, sizeof(int)); 

Je sais déjà que malloc (et sa famille) renvoie le type void * , et il existe de bonnes explications pour ne pas lancer malloc .

Mais ma question est la suivante: pourquoi le livre dit-il que je devrais le lancer?

De http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :

Dans C pré-ANSI – comme décrit dans K & R-1 – malloc () a renvoyé un caractère char * et il était nécessaire de convertir sa valeur de retour dans tous les cas où la variable de réception n’était pas également un caractère char * . Le nouveau type de void * de la norme C rend ces contorsions inutiles.

Pour sauver quelqu’un de l’embarras de sauter inutilement à la défense de K & R-2, j’ai demandé à Dennis Ritchie un avis que je pourrais citer sur la validité de la phrase citée ci-dessus à la page 142. Il a répondu:

En tout cas, maintenant que je relis les choses sur p. 142, je pense que c’est faux; Il est écrit de manière à ce que ce ne soit pas seulement défensif par rapport aux règles précédentes, il représente mal les règles ANSI.