c casting malloc kernighan-and-ritchie

¿Por qué el libro "El lenguaje de programación C" dice que debo lanzar malloc?



casting kernighan-and-ritchie (1)

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

En pre-ANSI C, como se describe en K & R-1, malloc () devolvió un char * y fue necesario convertir su valor de retorno en todos los casos en que la variable receptora no era también un char * . El nuevo tipo void * en el Estándar C hace que estas contorsiones sean innecesarias.

Para salvar a cualquiera de la vergüenza de saltar innecesariamente a la defensa de K & R-2, le pedí a Dennis Ritchie una opinión que pudiera citar sobre la validez de la oración citada anteriormente en la página 142. Él respondió:

En cualquier caso, ahora que releí las cosas en la pág. 142, creo que está mal; está escrito de tal manera que no solo es defensivo contra las reglas anteriores, sino que tergiversa las reglas ANSI.

Hoy llegué a la página 167 de The C Programming Language (segunda edición, Brian W. Kernighan y Dennis M. Ritchie) y descubrí que el autor dice que debo lanzar malloc . Aquí está la parte del libro:

7.8.5 Gestión de almacenamiento

Las funciones malloc y calloc obtienen bloques de memoria dinámicamente.

void *malloc(size_t n)

devuelve un puntero a n bytes de almacenamiento no inicializado, o NULL si no se puede satisfacer la solicitud.

void *calloc(size_t n, size_t size)

devuelve un puntero a suficiente espacio libre para una matriz de n objetos del tamaño especificado, o NULL si no se puede satisfacer la solicitud. El almacenamiento se inicializa a cero. El puntero devuelto por malloc o calloc tiene la alineación adecuada para el objeto en cuestión, pero debe convertirse en el tipo apropiado, como en

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

Ya sé que malloc (y su familia) devuelve type void * , y hay buenas explicaciones de por qué no lanzar malloc .

Pero mi pregunta es: ¿por qué el libro dice que debería lanzarlo?