Malloc et calloc

Signaler
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005
-
RTW
Messages postés
36
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
1 février 2004
-
Quelqu'un peut m'expliquer la difference?

Party 'till you drop !!!

7 réponses

Messages postés
36
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
1 février 2004

void *malloc( size_t size ) :
malloc alloue un espace mémoire de longueur 'size'.

void *calloc( size_t num, size_t size ) :
calloc alloue un espace mémoire avec un tableau de 'num' éléments, chacun de longueur 'size'.

C'est une traduction (et adaptation) très sommaire de la MSDN.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
en gros malloc(20)=calloc(10*2) !
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
7
a non erreur de frappe

malloc(10*2)=calloc(10,2)
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

OK pour RTW et aussi, la memoire allouée avec calloc est initialisée avec 0 et pas avec malloc.

Matt...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
2 points pour Matt67, c'est effectivement la difference essentielle.
BruNews, ciao...
Messages postés
56
Date d'inscription
vendredi 18 mai 2001
Statut
Membre
Dernière intervention
13 décembre 2005

Merci pour les reponses.

Il y a pas tant de difference que ca finalement. La memoire est stockee de la meme facon.

Je devrais donc rester avec malloc pour mes allocation et pas changer pour calloc?

Vue qu'on ecris dans la memoire, quelle soit initialiser a 0 ou pas change pas grands chose? A moins qu'il me manque des conaissances?

Party 'till you drop !!!
Messages postés
36
Date d'inscription
mercredi 31 décembre 2003
Statut
Membre
Dernière intervention
1 février 2004

La différence est que si tu utilise l'espace mémoire alloué par malloc SANS l'avoir préalablement initialisée, tu risque de provoquer des dégâts.
Alors qu'avec calloc tu ne risque pas grand chose, puisque l'espace mémoire est initialisé avec 0. C'est une sécurité.

Mais il est vrai qu'il faut TOUJOURS initialisé un pointeur, soit avec NULL, soit avec 0 (c'est pareil), soit directement avec l'adresse de la valeur visée.
J'ai lu ça dans le livre Visual C++ 6 d'Ivor Horton (Eyrolles / Wrox).

RTW, pour que l'entraide dure...