La diferencia entre la función malloc y la función calloc en el nivel 2 C
Tanto las funciones malloc() como calloc() se pueden utilizar para asignar dinámicamente espacio de memoria, pero existen ligeras diferencias entre ellas.
La función malloc() tiene un parámetro, que es el tamaño del espacio de memoria que se asignará:
void
*malloc(size_t
tamaño);
La función calloc() tiene dos parámetros, a saber, el número de elementos y el tamaño de cada elemento. El producto de estos dos parámetros es el tamaño del espacio de memoria. asignado.
void
*calloc(size_t
numElements,
size_t
sizeof
(Element));
Si la llamada tiene éxito, tanto la función malloc() como la función calloc() devolverán la primera dirección del espacio de memoria asignado.
La principal diferencia entre la función malloc() y la función calloc() es que la primera no puede inicializar el espacio de memoria asignado, mientras que la segunda sí.
Si el espacio de memoria asignado por la función malloc() no se ha utilizado antes, cada bit en él puede ser 0; por el contrario, si esta parte de la memoria se ha asignado antes, es posible que quede algo; en él. En otras palabras, un programa que usa la función malloc () puede ejecutarse normalmente al principio (el espacio de memoria no se ha reasignado), pero pueden ocurrir problemas después de un período de tiempo (el espacio de memoria se ha reasignado).
La función calloc() inicializará cada bit en el espacio de memoria asignado a cero. Es decir, si asigna memoria para elementos de tipo carácter o tipo entero, se garantizará que estos elementos se inicialicen. a 0; si asigna memoria para elementos de tipo puntero, estos elementos generalmente se inicializan en punteros nulos; si asigna memoria para datos reales, estos elementos se inicializarán en punto flotante cero;