Quina diferència hi ha entre calloc i malloc? Quin és més preferible per assignar memòria?


Resposta 1:

calloc = malloc + memset () (memset 0)

Malloc

Arguments

malloc només té un argument.

malloc (mida en bytes);

Inicialització

malloc no inicialitza l'àrea de memòria.

L’àrea de memòria assignada tindrà valors d’escombraries.

Calloc

Arguments

calloc pren dos arguments.

calloc (nombre d’elements, mida de l’element);

Inicialització

Calloc inicialitza l'àrea de memòria a zero.

Conclusió:

Feu servir calloc quan hagueu d’inicialitzar l’àrea de memòria assignada dinàmicament a zero.

En cas contrari, utilitzeu malloc.

Crèdits de contingut:

Log2Base2: visualitzeu-vos

Gràcies!


Resposta 2:

Pregunta: Quina diferència hi ha entre calloc i malloc? Quin és més preferible per assignar memòria?

Això ho vaig respondre abans a la resposta de Seth D. Fulmer a Què és malloc i calloc? però bàsicament el calloc és el mateix que malloc, però el calloc també inicialitza tots els índexs de la memòria assignada a 0. Realment calloc és una bonica característica de C que no existeix en codi C ++. Sí, en C ++ podeu utilitzar funcions C com malloc i calloc, però l'equivalent de malloc és el nou operador i no hi ha cap equivalent a calloc. No hi ha res de nou que estableixi els articles assignats a 0, en part perquè a C ++ se suposa que estàs creant objectes, no matrius primitives (mentre que puguis fer les dues coses) i no tindria gaire sentit si ho fes:

Punt * ptrPoint = Punt nou ();

i l'objecte al qual punt ptrPoint s'estableix en 0 després de ser construït. Com a tal, el calloc només és útil si destinem una sèrie de primitius (en contraposició a les estructures). Si creeu una matriu d'un tipus d'estructura, probablement voldreu utilitzar malloc i configurar manualment cada estructura de la matriu / bloc de memòria als valors adequats.


Resposta 3:

Pregunta: Quina diferència hi ha entre calloc i malloc? Quin és més preferible per assignar memòria?

Això ho vaig respondre abans a la resposta de Seth D. Fulmer a Què és malloc i calloc? però bàsicament el calloc és el mateix que malloc, però el calloc també inicialitza tots els índexs de la memòria assignada a 0. Realment calloc és una bonica característica de C que no existeix en codi C ++. Sí, en C ++ podeu utilitzar funcions C com malloc i calloc, però l'equivalent de malloc és el nou operador i no hi ha cap equivalent a calloc. No hi ha res de nou que estableixi els articles assignats a 0, en part perquè a C ++ se suposa que estàs creant objectes, no matrius primitives (mentre que puguis fer les dues coses) i no tindria gaire sentit si ho fes:

Punt * ptrPoint = Punt nou ();

i l'objecte al qual punt ptrPoint s'estableix en 0 després de ser construït. Com a tal, el calloc només és útil si destinem una sèrie de primitius (en contraposició a les estructures). Si creeu una matriu d'un tipus d'estructura, probablement voldreu utilitzar malloc i configurar manualment cada estructura de la matriu / bloc de memòria als valors adequats.