Nwlapcug.com


Funzione malloc



In C - un linguaggio di programmazione ideato da Dennis Ritchie presso AT & T Bell Laboratories nel primi anni del 1970 - la malloc funzione è un mezzo di allocazione di memoria in modo dinamico, o in risposta alla domanda, piuttosto che in termini assoluti. A volte i programmatori non sanno quanta memoria è necessario per i dati al momento che stanno scrivendo un programma, quindi malloc permette loro di allocare dinamicamente la memoria dopo aver avviato il programma in esecuzione.

Allocazione di memoria

Per impostazione predefinita, la funzione malloc alloca un blocco contiguo, o adiacente, di memoria su una zona conosciuta come un heap, che può essere letta da un programma per memorizzare dati e variabili. La funzione malloc accetta un solo argomento, un intero lungo o a 32 bit che rappresenta il numero di byte da allocare dall'heap. La funzione malloc chiede il sistema per un blocco di memoria della dimensione specificata e restituisce un puntatore..--un indirizzo, dal punto di vista del linguaggio di programmazione - il primo elemento del blocco.

Valore restituito

Computer hanno solo una quantità limitata di memoria, quindi è possibile per la funzione malloc richiedere più memoria di quella fisicamente disponibile e causare un crash del programma. Se è disponibile non è sufficiente memoria, malloc restituisce un puntatore null, o un puntatore con un valore pari a zero. Per impedire che un programma che si infrangono, i programmatori devono verificare in modo esplicito che malloc non ha restituito null, in modo che sappiano che la memoria richiesta è stata allocata correttamente prima di tentare di utilizzarlo.

Rilascio della memoria

Allo stesso modo, un computer perennemente non può allocare più memoria..--e ripetutamente sovrascrivendo un puntatore che punta alla memoria allocata dinamicamente può portare a dati diventare inaccessibile. Memoria allocata in modo dinamico deve essere liberato quindi indietro per il pool di memoria di sistema, utilizzando la funzione free, una volta che non è più necessario. Una volta che termina un processo, tutta la memoria allocata in modo dinamico viene rilasciata nuovamente al pool di memoria.

Sintassi

Malloc restituisce un puntatore generico, o un puntatore a void, ma il puntatore può essere digitato o typecast, per indicare il tipo di dati a cui fa riferimento. La sintassi "char str = (char ) malloc(40)," ad esempio, alloca memoria per una stringa di 40 caratteri. In alternativa, i programmatori possono dichiarare un puntatore e richiamare malloc quando vogliono fare spazio per gli elementi in una matrice. Tuttavia, è importante notare che la funzione malloc solo alloca memoria. Non svuotare o altrimenti inizializzare la memoria che alloca.