calloc
asigna num
bloques de memoria, cada uno de tamaño size
:Diferencia en el diseño del bloque de memoria asignado por malloc y calloc?
void * calloc (size_t num, size_t size);
asignar espacio para matriz en la memoria asigna un bloque de memoria para una matriz de elementos num, cada uno de ellos tamaño bytes de longitud e inicializa todos sus bits a cero.
En contraste, malloc
asigna un bloque de memoria de tamaño size
:
void * malloc (size_t size);
Asignar bloque de memoria asigna un bloque de bytes de tamaño de memoria, devolviendo un puntero a la comienzo del bloque.
¿Hay alguna diferencia entre ambos (a excepción del cero inicialización por calloc
)?
¿Qué significa calloc exactamente por num
bloques de memoria como en la práctica la región de memoria devuelta es contigua también.
Creo que tiene que haber alguna diferencia, de lo contrario no tendría mucho sentido definir dos interfaces diferentes para estos métodos.
sí, es por eso que ni siquiera intenté pensar que la memoria no es contigua. Entonces, ¿eso significa que la terminología, n bloques de memoria, es un error? –
@AvantikaSk Sí, eso es un error. – nos
En realidad, calloc asigna un solo bloque de memoria adecuado para almacenar una matriz de elementos de tamaño n. En la mayoría de las implementaciones, calloc llama a malloc y luego pone a cero la memoria. Creo que tienen dos prototipos diferentes por accidente y son diferentes solo porque calloc pone a cero la memoria. –