Differenza tra calloc e malloc

Differenza chiave - calloc vs malloc

Nella programmazione, è necessario memorizzare i dati. I dati sono archiviati nella memoria. Queste posizioni di memoria sono conosciute 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 elementi fissi dello stesso tipo. È un array. Il programmatore deve dichiarare la dimensione dell'array. Se il programmatore declama un array di numeri 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. L'altro metodo di allocazione della memoria è l'allocazione dinamica della memoria. L'allocazione dinamica della memoria aiuta ad allocare più memoria quando richiesto e rilascia 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 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.

CONTENUTO

1. Panoramica e differenza chiave
2. Cos'è calloc
3. Cos'è malloc
4. Somiglianze tra calloc e malloc
5. Confronto fianco a fianco - calloc vs malloc in forma tabulare
6. Sommario

Cos'è calloc?

L'allocazione della memoria è il processo di assegnazione della memoria per i programmi in esecuzione. A volte è necessario cambiare 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.

Figura 01: calloc e malloc

calloc sta per "assegnazione contigua". Alloca più blocchi di memoria con le stesse dimensioni. La sintassi per calloc è la seguente. Ci vogliono 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.

        void * calloc (size_t num, size_t size);

Fare riferimento al semplice programma C di seguito.

#includere

#includere

int main ()

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

if (ptr == NULL)

printf ("La memoria non è assegnata");

altro

printf ("La memoria è assegnata");

ritorno 0;

Secondo il programma di cui sopra, viene allocato un blocco contiguo di memoria che può contenere 20 elementi. Ciascuno avrà la dimensione di un intero. La sizeof (int) viene utilizzata perché il tipo intero varia dal compilatore al compilatore.

Se l'allocazione della memoria ha esito positivo, restituirà l'indirizzo di base del blocco di memoria. Significa che il puntatore ptr sta ora puntando all'indirizzo di base di quel blocco di memoria. Tutte le regioni allocate vengono inizializzate su zeri. Stampa il messaggio Memoria allocata. Se l'allocazione della memoria non riesce, restituirà il puntatore nullo. Pertanto, stamperà la memoria non è un messaggio assegnato.

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 * malloc (size_t_size);

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.

Fare riferimento al semplice programma C di seguito con la funzione malloc.

#includere

#includere

int main ()

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

if (ptr == NULL)

printf ("La memoria non è assegnata");

altro

printf ("La memoria è assegnata");

ritorno 0;

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

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 sono utilizzate per l'allocazione dinamica della memoria.
  • Il puntatore restituito da calloc e malloc deve essere inserito nel tipo specifico.
  • In caso di allocazione di memoria riuscita, entrambe le funzioni restituiranno un puntatore con l'indirizzo di base del blocco di memoria.
  • Se l'allocazione della memoria non ha successo, 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. malloc è una funzione per l'allocazione dinamica della memoria nel file di intestazione stdlib.h del linguaggio C che alloca un numero specifico di byte.
 Senso
calloc significa allocazione contigua. malloc sta per allocazione di memoria.
Sintassi
calloc segue una sintassi simile a void * calloc (size_t_num, size_t size); malloc segue una sintassi simile a void * malloc (size_t_size);.
 Numero di argomenti
calloc prende due argomenti. Sono un numero di blocchi e dimensioni di ogni blocco. malloc accetta un argomento. È un numero di byte.
Velocità
calloc impiega poco più di malloc. Ciò è a causa del passaggio aggiuntivo di inizializzazione della memoria allocata per zero. malloc è più veloce di calloc.

Sommario - calloc vs malloc

Nell'allocazione della memoria statica, come quella che usiamo gli array, la memoria è fissa. Se sono 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. In linguaggio C, calloc e malloc forniscono allocazione dinamica della memoria. La differenza tra calloc e malloc è che calloc alloca la 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 prende due argomenti mentre calloc prende due argomenti.

Scarica il PDF di calloc vs malloc

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

Riferimento:

1. Kumar, Krishan. "Differenza tra Malloc e Calloc in C." Cs-Fundamentals.com, Cs-Fundamentals.com. Disponibile qui  
2. "Assegnazione della memoria dinamica C". Wikipedia, Wikimedia Foundation, 13 gennaio 2018. Disponibile qui 
3. "Calloc () versus malloc ()." GeeksforGeeks, 14 giugno 2017. Disponibile qui