Tecnología

Inicio

Las diferencias en Malloc y calloc

Las diferencias en Malloc y calloc


Malloc y calloc son dos funciones de gestión de memoria en el lenguaje de programación "C". Los programas no tienen que reservar áreas de la memoria, porque eso es por lo general la responsabilidad del sistema operativo. Estas dos funciones no se utilizan con frecuencia y sólo son necesarios para aquellos programas que no pueden confiar en los procesos de gestión de memoria estándar.

"C" Lenguaje de Programación

"C" ha sido durante mucho tiempo un lenguaje privilegiado para la creación de redes de programación y manejo de archivos. Es un idioma difícil de aprender, porque sus palabras clave son mucho más codificados y menos como lenguaje real que otros lenguajes tales como COBOL, Pascal o Java. "C" está estrechamente ligada al sistema operativo Unix. De hecho, Unix está escrito en "C" A pesar de Unix tiene su propio lenguaje de scripts, "C" es el idioma predominante de los servicios basados ​​en Unix programación. Como la asignación de memoria está estrechamente relacionado con los sistemas operativos, malloc y calloc tienen más probabilidades de ser encontrado en los servicios de bajo nivel programados en "C" que en el cliente se enfrenta aplicaciones de alto nivel.

Gestión de la memoria

Un programa de "C" es una lista de instrucciones legible por humanos que no se pueden ejecutar en un ordenador. El programa tiene que ser compilado, lo que genera una copia del programa en código legible por máquina. Los sistemas operativos generalmente asignan posiciones de memoria a las variables e instrucciones en el programa en el momento se compila el programa. Las variables son un espacio de almacenamiento temporal para los datos en el curso de la ejecución del programa. Malloc y calloc proporcionan un método para retrasar la asignación de direcciones de memoria hasta que el programa se ejecuta. Esto se conoce como gestión de memoria dinámica.

Malloc y calloc

Tanto malloc y calloc asignar un espacio en la memoria heap al programa. Cada función devuelve un puntero a la primera dirección de memoria asignada y todos los demás bloques de memoria debe ser contiguos. Si el sistema no dispone de la memoria disponible, ambas funciones devolver null. Tanto la memoria de reserva para las funciones ya sea entero o datos de caracteres. En cada caso, el tamaño del bloque de memoria debe ser un múltiplo del tamaño requerido para ese tipo de datos. Por lo tanto, es una práctica común el uso de la función sizeof () dentro de la lista de parámetros, tanto para malloc y calloc para el argumento de tamaño de bloque para asegurar que el tamaño de la memoria solicitada es un múltiplo del tipo de datos previsto.

Comparación

Malloc toma un argumento y asigna un bloque del tamaño solicitado. Calloc toma dos argumentos, que son el número de bloques necesarios y el tamaño requerido para cada bloque. Por esta razón, malloc se juzga que es útil para una sola variable, y calloc se adapta mejor a la asignación de memoria para una matriz - la cual contiene varios elementos. Malloc no inicializa el área de memoria solicitada, mientras que calloc cero llena.