Differenza tra calloc e malloc

Sommario:

Differenza tra calloc e malloc
Differenza tra calloc e malloc

Video: Differenza tra calloc e malloc

Video: Differenza tra calloc e malloc
Video: Calloc vs malloc | GeeksforGeeks 2024, Novembre
Anonim

Differenza chiave – calloc vs malloc

In programmazione è necessario memorizzare i dati. I dati vengono archiviati in memoria. Queste posizioni di memoria sono note come variabili. Ogni variabile ha un tipo specifico. Possono essere numeri interi, float, doppi, caratteri ecc. Esistono anche strutture dati che possono memorizzare una raccolta sequenziale di dimensioni fisse di elementi dello stesso tipo. È una matrice. Il programmatore deve dichiarare la dimensione dell'array. Se il programmatore dichiara una matrice di interi per cinque elementi, non è possibile assegnare un valore a un indice superiore alla dimensione dichiarata. L'allocazione della memoria è fissa e non può essere modificata in fase di esecuzione. Un altro metodo di allocazione della memoria è l'allocazione dinamica della memoria. L'allocazione dinamica della memoria consente di allocare più memoria quando necessario e di rilasciarla quando necessario. Il file di intestazione ha quattro funzioni per l'allocazione dinamica della memoria. calloc e malloc sono due di queste funzioni. Il differenza fondamentale tra calloc e malloc è quello calloc alloca la memoria e inizializza anche i blocchi di memoria allocati a zero mentre malloc alloca la memoria ma non inizializza quella memoria allocata a zero. L'accesso al contenuto in calloc darà zero, ma malloc darà un valore spazzatura.

Cos'è calloc?

L'allocazione della memoria è il processo di assegnazione della memoria per i programmi in esecuzione. A volte è necessario modificare la dimensione della memoria. Pertanto, viene utilizzata l'allocazione dinamica della memoria. È fatto usando i puntatori. I puntatori sono variabili di riferimento che contengono l'indirizzo di un' altra variabile.

Differenza tra calloc e malloc
Differenza tra calloc e malloc

Figura 01: calloc e malloc

calloc sta per "allocazione contigua". Alloca più blocchi di memoria con la stessa dimensione. La sintassi per calloc è la seguente. Occorrono due argomenti. Sono il numero di blocchi e la dimensione di ogni blocco. La funzione calloc restituisce un puntatore void, quindi un operatore cast viene utilizzato per restituire il tipo di puntatore in base al tipo di dati richiesto.

voidcalloc(size_t num, size_t size);

Fai riferimento al semplice programma C di seguito.

include

include

int main(){

int ptr=(int) calloc(20, sizeof(int));

se (ptr==NULL){

printf("Memoria non allocata");

}

altro{

printf("Memoria allocata");

}

ritorno 0;

}

Secondo il programma sopra, viene allocato un blocco di memoria contiguo che può contenere 20 elementi. Ciascuno avrà la dimensione di un numero intero. Viene utilizzato sizeof(int) perché il tipo intero varia da compilatore a compilatore.

Se l'allocazione della memoria riesce, restituirà l'indirizzo di base del blocco di memoria. Significa che il puntatore ptr ora punta all'indirizzo di base di quel blocco di memoria. Tutte le regioni assegnate vengono inizializzate a zero. Stamperà il messaggio Memoria allocata. Se l'allocazione della memoria non riesce, restituirà il puntatore null. Pertanto, stamperà il messaggio Memoria non allocata.

Cos'è malloc?

La funzione malloc viene utilizzata per allocare la quantità richiesta di byte in memoria. La sintassi per malloc è la seguente. La dimensione rappresenta la memoria richiesta in byte.

void maloc(taglia_t_taglia);

La funzione malloc restituisce un puntatore void, quindi un operatore cast viene utilizzato per restituire il tipo di puntatore in base al tipo di dati richiesto.

Fai riferimento al semplice programma C qui sotto con la funzione malloc.

include

include

int main(){

int ptr=(int) malloc (10sizeof(int));

se (ptr==NULL){

printf("Memoria non allocata");

}

altro{

printf("Memoria allocata");

}

ritorno 0;

}

Secondo il programma sopra, verrà allocato un blocco di memoria. Il puntatore punta all'indirizzo iniziale della memoria allocata. Il puntatore restituito viene convertito in un tipo intero. Se la memoria è allocata, stamperà il messaggio di memoria allocata. Se la memoria non è allocata, verrà restituito un puntatore nullo. Pertanto, verrà stampato il messaggio di memoria non allocata.

Quali sono le somiglianze tra calloc e malloc?

  • Entrambe queste funzioni sono dichiarate nel file di intestazione. È il file di intestazione della libreria standard.
  • Entrambe le funzioni vengono utilizzate per l'allocazione dinamica della memoria.
  • Il puntatore restituito da calloc e malloc dovrebbe essere convertito nel tipo specifico.
  • In caso di allocazione della memoria riuscita, entrambe le funzioni restituiranno un puntatore con l'indirizzo di base del blocco di memoria.
  • Se l'allocazione della memoria non riesce, verrà restituito un puntatore nullo.

Qual è la differenza tra calloc e malloc?

calloc vs malloc

calloc è una funzione per l'allocazione dinamica della memoria nel file di intestazione stdlib.h del linguaggio C che alloca un numero specifico di byte e li inizializza a zero. maloc è una funzione per l'allocazione dinamica della memoria nel file di intestazione stdlib.h del linguaggio C che alloca un numero specifico di byte.
Significato
calloc sta per allocazione contigua. maloc sta per allocazione di memoria.
Sintassi
calloc segue una sintassi simile a void calloc(size_t_num, size_t size); maloc segue una sintassi simile a void maloc(size_t_size);.
Numero di argomenti
calloc accetta due argomenti. Sono un numero di blocchi e le dimensioni di ogni blocco. maloc accetta un argomento. È un numero di byte.
Velocità
calloc impiega poco più tempo di malloc. Ciò è dovuto al passaggio aggiuntivo dell'inizializzazione della memoria allocata di zero. maloc è più veloce di calloc.

Riepilogo – calloc vs malloc

Nell'allocazione della memoria statica, come quando si usano gli array, la memoria è fissa. Se vengono memorizzati pochi elementi, il resto della memoria viene sprecato. Potrebbe anche causare errori quando la memoria allocata è piccola rispetto alla memoria richiesta. Pertanto, viene utilizzata l'allocazione dinamica della memoria. Nel linguaggio C, calloc e malloc forniscono l'allocazione dinamica della memoria. La differenza tra calloc e malloc è che calloc alloca memoria e inizializza anche i blocchi di memoria allocati a zero mentre malloc alloca la memoria ma non inizializza i blocchi di memoria a zero. Malloc accetta due argomenti mentre calloc accetta due argomenti.

Scarica il PDF di calloc vs malloc

Puoi scaricare la versione PDF di questo articolo e usarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui: Differenza tra calloc e malloc

Consigliato: