Quelle est la différence entre calloc et malloc? Lequel est le plus préférable pour allouer de la mémoire?


Réponse 1:

calloc = malloc + memset () (memset 0)

Malloc

Arguments

malloc ne prend qu'un seul argument.

malloc (taille en octets);

Initialisation

malloc n'initialise pas la zone mémoire.

La zone de mémoire allouée aura des valeurs de déchets.

Calloc

Arguments

calloc prend deux arguments.

calloc (nombre d'éléments, taille de l'élément);

Initialisation

calloc initialise la zone mémoire à zéro.

Conclusion:

Utilisez calloc lorsque vous devez initialiser la zone de mémoire allouée dynamiquement à zéro.

Sinon, utilisez malloc.

Crédits de contenu:

Log2Base2 - Visualisez-vous

Merci!


Réponse 2:

Question: Quelle est la différence entre calloc et malloc? Lequel est le plus préférable pour allouer de la mémoire?

J'ai déjà répondu à cela dans la réponse de Seth D. Fulmer à Qu'est-ce que le malloc et le calloc? mais fondamentalement calloc est le même que malloc mais calloc initialise également chaque index de la mémoire allouée à 0. Vraiment calloc est une fonctionnalité intéressante de C qui n'existe pas dans du code purement C ++. Oui en C ++ vous pouvez utiliser des fonctions C comme malloc et calloc mais l'équivalent de malloc est le nouvel opérateur et il n'y a pas d'équivalent à calloc. Rien de nouveau ne définit les éléments alloués à 0 - en partie parce qu'en C ++, on suppose que vous créez des objets, pas des tableaux primitifs (alors que vous pouvez faire les deux) et cela n'aurait pas beaucoup de sens si vous le faisiez:

Point * ptrPoint = nouveau Point ();

et l'objet vers lequel ptrPoint pointe est mis à 0 après avoir été construit. En tant que tel, calloc n'est vraiment utile que si vous allouez un tableau de primitives (par opposition aux structures). Si vous créez un tableau d'un type de structure, vous souhaiterez probablement utiliser malloc et définir manuellement chaque structure du tableau / bloc de mémoire sur les valeurs appropriées.


Réponse 3:

Question: Quelle est la différence entre calloc et malloc? Lequel est le plus préférable pour allouer de la mémoire?

J'ai déjà répondu à cela dans la réponse de Seth D. Fulmer à Qu'est-ce que le malloc et le calloc? mais fondamentalement calloc est le même que malloc mais calloc initialise également chaque index de la mémoire allouée à 0. Vraiment calloc est une fonctionnalité intéressante de C qui n'existe pas dans du code purement C ++. Oui en C ++ vous pouvez utiliser des fonctions C comme malloc et calloc mais l'équivalent de malloc est le nouvel opérateur et il n'y a pas d'équivalent à calloc. Rien de nouveau ne définit les éléments alloués à 0 - en partie parce qu'en C ++, on suppose que vous créez des objets, pas des tableaux primitifs (alors que vous pouvez faire les deux) et cela n'aurait pas beaucoup de sens si vous le faisiez:

Point * ptrPoint = nouveau Point ();

et l'objet vers lequel ptrPoint pointe est mis à 0 après avoir été construit. En tant que tel, calloc n'est vraiment utile que si vous allouez un tableau de primitives (par opposition aux structures). Si vous créez un tableau d'un type de structure, vous souhaiterez probablement utiliser malloc et définir manuellement chaque structure du tableau / bloc de mémoire sur les valeurs appropriées.