Aujourd'hui, j'ai atteint la page 167 de The C Programming Language (deuxième édition Brian W. Kernighan & Dennis M. Ritchie) et j'ai trouvé que l'auteur dit que je dois lancer malloc
. Voici la partie du livre:
7.8.5 Gestion du stockage
Les fonctions malloc et calloc obtiennent des blocs de mémoire dynamiquement.
void *malloc(size_t n)
renvoie un pointeur vers 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 vers suffisamment d'espace libre pour un tableau de n objets 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 retourné par malloc ou calloc a le bon alignement pour l'objet en question, mais il doit être casté 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 y a de bonnes explications pourquoi ne pas lancermalloc
.
Mais ma question est: pourquoi le livre dit-il que je devrais le lancer?
void *
et n'ait pas été mis à jour. Voir aussi cette réponse .malloc
car ce n'est PAS du C ++ - sauf lorsque vous devez le faire - mais vous ne devriez pas - sauf ... AGGGHHHHHH !!!!! :-)Réponses:
Depuis http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :
la source
char*
, nonchar
. Les deux sont très différents.