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 emitir 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 emitirmalloc
.
Pero mi pregunta es: ¿por qué el libro dice que debería lanzarlo?
void *
y no se haya actualizado. Ver también esta respuesta .malloc
porque NO es C ++ - excepto cuando tiene que hacerlo, pero no debe hacerlo - excepto ... :-)Respuestas:
De http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :
fuente
char*
, nochar
. Los dos son muy diferentes.