¿Cuál es la diferencia entre calloc y malloc? ¿Cuál es más preferible para asignar memoria?


Respuesta 1:

calloc = malloc + memset () (memset 0)

Malloc

Argumentos

malloc solo toma un argumento.

malloc (tamaño en bytes);

Inicialización

malloc no inicializa el área de memoria.

El área de memoria asignada tendrá valores basura.

Calloc

Argumentos

calloc toma dos argumentos.

calloc (número de elementos, tamaño del elemento);

Inicialización

calloc inicializa el área de memoria a cero.

Conclusión:

Use calloc cuando necesite inicializar el área de memoria asignada dinámicamente a cero.

De lo contrario, use malloc.

Créditos de contenido:

Log2Base2 - Visualízate a ti mismo

¡Gracias!


Respuesta 2:

Pregunta: ¿Cuál es la diferencia entre calloc y malloc? ¿Cuál es más preferible para asignar memoria?

Respondí esto antes en la respuesta de Seth D. Fulmer a ¿Qué es malloc y calloc? pero básicamente calloc es lo mismo que malloc, pero calloc también inicializa cada índice de la memoria asignada a 0. Realmente calloc es una buena característica de C que no existe en código puramente C ++. Sí, en C ++ puede usar funciones de C como malloc y calloc, pero el equivalente de malloc es el nuevo operador y no hay equivalente para calloc. No hay nada como nuevo que establezca los elementos asignados a 0, en parte porque en C ++ se supone que está creando objetos, no matrices primitivas (mientras que puede hacer ambas cosas) y no tendría mucho sentido si lo hiciera:

Point * ptrPoint = new Point ();

y el objeto al que apunta ptrPoint se establece en 0 después de ser construido. Como tal, calloc solo es realmente útil si está asignando una matriz de primitivas (en lugar de estructuras). Si está creando una matriz de un tipo de estructura, probablemente quiera usar malloc y configurar manualmente cada estructura en la matriz / bloque de memoria con los valores apropiados.


Respuesta 3:

Pregunta: ¿Cuál es la diferencia entre calloc y malloc? ¿Cuál es más preferible para asignar memoria?

Respondí esto antes en la respuesta de Seth D. Fulmer a ¿Qué es malloc y calloc? pero básicamente calloc es lo mismo que malloc, pero calloc también inicializa cada índice de la memoria asignada a 0. Realmente calloc es una buena característica de C que no existe en código puramente C ++. Sí, en C ++ puede usar funciones de C como malloc y calloc, pero el equivalente de malloc es el nuevo operador y no hay equivalente para calloc. No hay nada como nuevo que establezca los elementos asignados a 0, en parte porque en C ++ se supone que está creando objetos, no matrices primitivas (mientras que puede hacer ambas cosas) y no tendría mucho sentido si lo hiciera:

Point * ptrPoint = new Point ();

y el objeto al que apunta ptrPoint se establece en 0 después de ser construido. Como tal, calloc solo es realmente útil si está asignando una matriz de primitivas (en lugar de estructuras). Si está creando una matriz de un tipo de estructura, probablemente quiera usar malloc y configurar manualmente cada estructura en la matriz / bloque de memoria con los valores apropiados.