Le differenze di Malloc e calloc

April 28

Le differenze di Malloc e calloc


Malloc e calloc sono due funzioni di gestione della memoria nel "C" linguaggio di programmazione. Programmi non devono riservare aree di memoria, perché è solitamente di competenza del sistema operativo. Queste due funzioni non sono frequentemente utilizzati e sono necessari solo per quei programmi che non possono contare su processi di gestione della memoria standard.

"C" Programming Language

"C" è stato a lungo una lingua preferita per il networking programmazione e la gestione dei file. È una lingua difficile da imparare, perché le sue parole chiave sono molto più codificate e meno come vero e proprio linguaggio di altre lingue come il COBOL, Pascal o Java. "C" è strettamente legato al sistema operativo Unix. In realtà, Unix è scritto in "C." Anche se Unix ha un proprio linguaggio di scripting, "C" è la lingua prevalente per i servizi di programmazione basati su Unix. Come allocazione di memoria è strettamente legato ai sistemi operativi, malloc e calloc hanno maggiori probabilità di essere trovati nei servizi a basso livello programmato in "C" che nel client di fronte applicazioni di alto livello.

Gestione della memoria

Un programma "C" è un elenco di istruzioni leggibili che non possono essere eseguiti su un computer. Il programma deve essere compilato, che genera una copia del programma in codice leggibile a macchina. I sistemi operativi di solito assegnano posizioni di memoria per le variabili e le istruzioni del programma al momento il programma viene compilato. Le variabili sono uno spazio di archiviazione temporanea per i dati nel corso della esecuzione del programma. Malloc e calloc forniscono un metodo per ritardare l'assegnazione di indirizzi di memoria fino a quando il programma viene eseguito. Questo è chiamato gestione della memoria dinamica.

Malloc e calloc

Sia malloc e calloc allocate uno spazio in memoria heap al programma. Ogni funzione restituisce un puntatore al primo indirizzo di memoria allocata e tutti gli altri blocchi di memoria dovrebbe essere contigue. Se il sistema non ha la memoria disponibile, entrambe le funzioni restituire null. Sia la memoria funzioni di riserva sia per intero o dati carattere. In ogni caso, la dimensione del blocco di memoria deve essere un multiplo della dimensione richiesta per tale tipo di dati. Pertanto, è pratica comune utilizzare la funzione sizeof () nella lista dei parametri sia malloc e calloc per l'argomento dimensione di blocco per assicurare che la quantità di memoria richiesta è un multiplo del tipo di dati previsto.

Confronto

Malloc prende un argomento e assegna un blocco delle dimensioni richieste. Calloc prende due argomenti, che sono il numero di blocchi necessari e la dimensione richiesta per ogni blocco. Per questo motivo, malloc è giudicato utile per una singola variabile, e calloc è più adatto per l'allocazione di memoria per un array - che contiene diversi elementi. Malloc non inizializza l'area di memoria richiesta, mentre calloc a zero lo riempie.