¿Por qué dice el Libro que debo elegir a Malloc?


Hoy llegué a la página 167 de El Lenguaje de programación C (segunda edición Brian W. Kernighan & Dennis M. Ritchie) y encontró que el autor dice que debo lanzar malloc. Aquí está la parte del libro:

7.8.5 Gestión del 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 la solicitud no puede ser satisfecho.

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 la solicitud no puede ser satisfecha. 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 ser lanzado en el tipo apropiado, como en

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

Ya sé que malloc (y su familia) devuelve el tipo void * , y hay buenos explicaciones por qué no lanzar malloc.

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

Author: Community, 2015-09-18

1 answers

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

In pre-ANSI C as as described in K & R-1 mall malloc () returned a char * y fue necesario lanzar su valor de retorno en todos los casos en que el la variable receptora no fue también un char *. El nuevo void * escribe La norma 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 pregunté a Dennis Ritchie por una opinión que podría cita sobre la validez de la frase citada arriba de la página 142. He respondió:

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

 204
Author: Keine Lust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-18 13:10:10