En la programación, es necesario almacenar datos. Los datos se almacenan en la memoria. Estas ubicaciones de memoria se conocen como variables. Cada variable tiene un tipo específico. Pueden ser enteros, flotadores, dobles, personajes, etc. También hay estructuras de datos que pueden almacenar una recopilación secuencial de elementos de tamaño fijo del mismo tipo. Es una matriz. El programador tiene que declarar el tamaño de la matriz. Si el programador declara una matriz de enteros para cinco elementos, no es posible asignar un valor a un índice superior al tamaño declarado. La asignación de memoria se fija y no se puede cambiar en el tiempo de ejecución. Otro método de asignación de memoria es la asignación de memoria dinámica. La asignación de memoria dinámica ayuda a asignar más memoria cuando sea necesario y liberar cuando sea necesario. El archivo de encabezado tiene cuatro funciones para la asignación de memoria dinámica. Calloc y Malloc son dos de esas funciones. El diferencia clave Entre Calloc y Malloc es que Calloc asigna la memoria y también inicializa los bloques de memoria asignados a cero, mientras que Malloc asigna la memoria, pero no inicializa esa memoria asignada a cero. Acceder al contenido en Calloc dará cero, pero Malloc dará un valor de basura.
1. Descripción general y diferencia de claves
2. Que es calloc
3. Que es malloc
4. Similitudes entre Calloc y Malloc
5. Comparación lado a lado: calloc vs malloc en forma tabular
6. Resumen
La asignación de memoria es el proceso de asignación de memoria para los programas de ejecución. A veces es necesario cambiar el tamaño de la memoria. Por lo tanto, se utiliza la asignación de memoria dinámica. Se termina usando punteros. Los punteros son variables de referencia que contienen la dirección de otra variable.
Figura 01: Calloc y Malloc
Calloc significa "Asignación contigua". Asigna múltiples bloques de memoria con el mismo tamaño. La sintaxis para Calloc es la siguiente. Se necesitan dos argumentos. Son el número de bloques y el tamaño de cada bloque. La función Calloc devuelve un puntero vacío, por lo que un operador de fundición se usa para devolver el tipo de puntero de acuerdo con el tipo de datos requerido.
void * calloc (size_t num, size_t size);
Consulte el siguiente programa C Simple C.
#incluir
#incluir
int main ()
int ptr * = (int *) calloc (20, sizeof (int));
if (ptr == null)
printf ("La memoria no está asignada");
demás
printf ("La memoria se asigna");
regresar 0;
Según el programa anterior, se asigna un bloque contiguo de memoria que puede contener 20 elementos. Cada uno tendrá el tamaño de un entero. Se utiliza el sizeof (int) porque el tipo entero varía de compilador a compilador.
Si la asignación de memoria es exitosa, devolverá la dirección base del bloque de memoria. Significa que el puntero PTR ahora apunta a la dirección base de ese bloque de memoria. Todas las regiones asignadas se inicializan en ceros. Imprimirá el mensaje asignado de memoria. Si la asignación de memoria no tiene éxito, devolverá el puntero nulo. Por lo tanto, la memoria imprimirá que no se asigna el mensaje.
La función MALLOC se usa para asignar la cantidad requerida de bytes en la memoria. La sintaxis para Malloc es la siguiente. El tamaño representa la memoria requerida en bytes.
void *malloc (size_t_size);
La función malloc devuelve un puntero vacío, por lo que un operador de fundición se usa para devolver el tipo de puntero de acuerdo con el tipo de datos requerido.
Consulte el siguiente programa C simple con la función MALLOC.
#incluir
#incluir
int main ()
int ptr * = (int *) malloc (10 * sizeOf (int));
if (ptr == null)
printf ("La memoria no está asignada");
demás
printf ("La memoria se asigna");
regresar 0;
Según el programa anterior, se asignará el bloque de memoria. El puntero apunta a la dirección inicial de la memoria asignada. El puntero devuelto se convierte en un tipo entero. Si se asigna la memoria, se imprimirá la memoria se asigna el mensaje. Si la memoria no se asigna, un puntero nulo regresará. Por lo tanto, la memoria no se asigna el mensaje se imprimirá.
Calloc vs Malloc | |
Calloc es una función para la asignación de memoria dinámica en el lenguaje C stdlib.H Archivo de encabezado que asigna un número específico de bytes y los inicializa a cero. | Malloc es una función para la asignación de memoria dinámica en el lenguaje C stdlib.H Archivo de encabezado que asigna un número específico de bytes. |
Significado | |
Calloc significa asignación contigua. | Malloc significa asignación de memoria. |
Sintaxis | |
Calloc sigue una sintaxis similar a void *Calloc (size_t_num, size_t size); | Malloc sigue una sintaxis similar a Void *Malloc (size_t_size);. |
Número de argumentos | |
Calloc toma dos argumentos. Son una serie de bloques y tamaño de cada bloque. | Malloc toma un argumento. Es una serie de bytes. |
Velocidad | |
Calloc tarda poco más que Malloc. Eso se debe al paso adicional de inicializar la memoria asignada por cero. | Malloc es más rápido que Calloc. |
En la asignación de memoria estática, como US utilizando matrices, la memoria se fija. Si se almacenan pocos elementos, entonces se desperdicia el resto de la memoria. También puede causar errores cuando la memoria asignada es pequeña que la memoria requerida. Por lo tanto, se utiliza la asignación de memoria dinámica. En el lenguaje C, Calloc y Malloc proporcionan una asignación de memoria dinámica. La diferencia entre Calloc y Malloc es que Calloc asigna la memoria y también inicializa los bloques de memoria asignados a cero, mientras que Malloc asigna la memoria pero no inicializa los bloques de memoria a cero. Malloc toma dos argumentos mientras Calloc toma dos argumentos.
Puede descargar la versión PDF de este artículo y usarla para fines fuera de línea según la nota de cita. Descargue la versión PDF aquí: Diferencia entre Calloc y Malloc
1.Kumar, Krishan. "Diferencia entre Malloc y Calloc en C."CS-Fundamentals.com, CS-Fundaments.comunicarse. Disponible aquí
2."Asignación de memoria dinámica C."Wikipedia, Fundación Wikimedia, 13 de enero. 2018. Disponible aquí
3."Calloc () versus malloc ()."Geeksforgeeks, 14 de junio de 2017. Disponible aquí