Cos'è malloc in C?
La funzione malloc () sta per allocazione della memoria. È una funzione che viene utilizzata per allocare dinamicamente un blocco di memoria. Riserva lo spazio di memoria della dimensione specificata e restituisce il puntatore nullo che punta alla posizione di memoria. Il puntatore restituito è generalmente di tipo void. Significa che possiamo assegnare la funzione malloc a qualsiasi puntatore.
Sintassi
ptr = (cast_type *) malloc (byte_size);
Qui,
- ptr è un puntatore di cast_type.
- La funzione malloc restituisce un puntatore alla memoria allocata di byte_size.
Example: ptr = (int *) malloc (50)
Quando questa istruzione viene eseguita correttamente, viene riservato uno spazio di memoria di 50 byte. L'indirizzo del primo byte di spazio riservato è assegnato al puntatore ptr di tipo int.
Considera un altro esempio di implementazione di malloc:
#includeint main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}
Produzione:
Value of the 6th integer is 480
- Si noti che sizeof (* ptr) è stato utilizzato al posto di sizeof (int) per rendere il codice più robusto quando la dichiarazione * ptr viene tipizzata in un altro tipo di dati in seguito.
- L'allocazione potrebbe non riuscire se la memoria non è sufficiente. In questo caso, restituisce un puntatore NULL. Quindi, dovresti includere il codice per verificare la presenza di un puntatore NULL.
- Tieni presente che la memoria allocata è contigua e può essere trattata come un array. Possiamo usare l'aritmetica dei puntatori per accedere agli elementi dell'array piuttosto che usare le parentesi []. Si consiglia di utilizzare + per fare riferimento agli elementi dell'array perché l'utilizzo di incrementation ++ o + = cambia l'indirizzo memorizzato dal puntatore.
La funzione Malloc può essere utilizzata anche con il tipo di dati carattere e con tipi di dati complessi come le strutture.