"C " ha sido durante mucho tiempo un lenguaje privilegiado para la programación de redes y gestión de archivos . Es un idioma difícil de aprender, porque sus palabras son mucho más codificado y menos como lenguaje real que otros lenguajes como COBOL, Pascal o Java. "C " está estrechamente ligado al sistema operativo Unix . De hecho , Unix está escrito en " C " Aunque Unix tiene su propio lenguaje de programación , "C" es el idioma predominante para la programación de los servicios basados en Unix . Como la asignación de memoria está estrechamente relacionada 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 frente a aplicaciones de alto nivel .
Memoria de Gestión
un programa de "C " es una lista de instrucciones legibles 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 la máquina . Los sistemas operativos suelen asignar posiciones de memoria para las variables e instrucciones en el programa en el momento el programa se compila . Las variables son un espacio de almacenamiento temporal para los datos durante 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 se ejecute el programa . 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 . Ambas funciones se reservan memoria para 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 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 necesario para cada bloque. Por esta razón , malloc se juzga que es útil para una sola variable , y calloc es más adecuado para la asignación de memoria para una matriz - la cual contiene varios elementos . Malloc no inicializa el área de memoria requerida , mientras que cero calloc llena.