Memoria libera in C con funzione Free

Free Memory C With Free Function



Il linguaggio C è abbastanza efficiente da gestire la sua gestione della memoria. Significa che ogni volta che dichiari una variabile regolare di qualsiasi tipo di dati in C, il linguaggio di programmazione stesso è responsabile della deallocazione o del rilascio di questa memoria una volta che il tuo programma è stato eseguito con successo. Tuttavia, nel caso dell'allocazione dinamica della memoria, poiché stai allocando la memoria manualmente, ecco perché devi anche rilasciarla da solo.

Nella libreria stdlib.h, c'è una funzione dedicata a questo scopo, cioè la funzione free(). Oggi esploreremo la necessità di utilizzare questa funzione nel linguaggio di programmazione C. Successivamente, esamineremo alcuni esempi in cui questa funzione è stata utilizzata per liberare manualmente la memoria nel linguaggio di programmazione C in Linux.







Necessità di utilizzare la funzione Free in C per liberare memoria di sistema:

Sappiamo tutti che i nostri sistemi informatici hanno una memoria limitata, a causa della quale non possiamo mai eseguire infiniti programmi al suo interno. Nel caso dell'allocazione automatica della memoria, il computer si occupa di liberare la memoria quando il programma ha terminato la sua esecuzione. Tuttavia, quando allochiamo manualmente la memoria dall'heap, dobbiamo liberarla in un modo o nell'altro.



Altrimenti, finiremo per esaurire la memoria e non eseguiremo più i nostri programmi. È qui che entra in gioco la funzione free() della libreria stdlib.h. Usiamo questa funzione alla fine di un programma subito prima dell'istruzione return in modo che la memoria heap debba essere restituita al sistema del computer prima della fine del programma.



Supponiamo che continuerai a ignorare questa funzione mentre scrivi i tuoi codici C che sono particolarmente mirati all'allocazione dinamica della memoria. In tal caso, arriverà un punto in cui non sarà più possibile accedere all'heap poiché la memoria si esaurirà. Ecco perché questa funzione apparentemente meno preziosa non deve mai essere dimenticata ogni volta che ci si assume la responsabilità dell'allocazione dinamica della memoria.





La sintassi generale della funzione free() nel linguaggio di programmazione C è la seguente:

vuotogratuito (vuoto*ptr)

Qui, la parola chiave void prima della funzione free() afferma che il tipo restituito di questa funzione è void. Il puntatore tra parentesi corrisponde alla locazione di memoria che deve essere deallocata. La sezione seguente descriverà alcuni esempi in cui la funzione free() è stata utilizzata per liberare la memoria dinamica acquisita in C.



Esempi di utilizzo della funzione libera in C:

La funzione free() può essere utilizzata con tutte e tre le funzioni di allocazione della memoria della libreria stdlib.h, ovvero malloc, calloc e realloc. È obbligatorio utilizzare questa funzione dopo aver indicato le funzionalità di base del programma in modo da poter restituire al computer la memoria heap che è stata allocata dinamicamente durante l'esecuzione del programma. Ora, diamo un'occhiata ad alcuni esempi in cui la funzione free() è stata utilizzata con le funzioni malloc e calloc nel linguaggio di programmazione C.

Esempio n. 1: utilizzo della funzione gratuita con calloc in C:

Il codice C per l'utilizzo della funzione free() con la funzione calloc() è stato condiviso nell'immagine seguente:

Lo scopo fondamentale di questo codice era assegnare un po' di memoria in modo dinamico con l'aiuto della funzione calloc(). Per questo, abbiamo preso la dimensione della memoria dinamica ei valori di questa memoria dinamica come input dall'utente. Quindi, abbiamo inteso stampare i valori acquisiti sul terminale. Dopo tutto questo codice, abbiamo la nostra funzione free() che rilascerà la memoria dinamica allocata a causa dell'esecuzione del nostro programma C.

Una versione leggermente modificata dello stesso codice è mostrata anche nell'immagine citata di seguito:

Questa versione modificata intendeva solo stampare i nostri valori di memoria allocati dinamicamente prima della sua inizializzazione manuale. Sappiamo che la funzione calloc() inizializza l'intera memoria con zeri prima che avvenga l'attualizzazione. Tuttavia, il punto principale da notare qui in questo codice è che anche se questo codice era abbastanza compatto e semplice, abbiamo comunque fatto uso della funzione free() una volta ottenuta la funzionalità desiderata solo per rilasciare la memoria heap che avevamo acquisita a seguito dell'esecuzione di questo programma C.

Esempio n. 2: utilizzo della funzione gratuita con malloc in C:

Il codice C per l'utilizzo della funzione free() con la funzione malloc() è stato condiviso nell'immagine allegata di seguito:

Lo scopo fondamentale di questo codice era assegnare un po' di memoria in modo dinamico con l'aiuto della funzione malloc(). Per questo, abbiamo assegnato i valori di questa memoria dinamica in un ciclo for. Quindi, si intendeva stampare i valori acquisiti sul terminale con l'aiuto di un altro ciclo for. Dopo tutto questo codice, abbiamo la nostra funzione free() subito prima dell'istruzione return che rilascerà semplicemente la memoria dinamica allocata come risultato dell'esecuzione del nostro programma C.

Conclusione:

Questo articolo ha sottolineato l'importanza dell'uso della funzione free() nel linguaggio di programmazione C in Linux. La maggior parte degli utenti ritiene che le funzioni di allocazione del file stdlib.h siano più importanti; tuttavia, leggendo questo articolo, puoi vedere chiaramente che la funzione free() è ugualmente importante. Ti aiuterà a liberare la memoria acquisita dinamicamente e ti assicurerà di non rimanere mai a corto di memoria ogni volta che proverai a eseguire i tuoi programmi in futuro.