Realloc c

Realloc c
Il concetto della funzione realloc () nel linguaggio di programmazione C sarà discusso in questo articolo. Per iniziare con questo concetto, dobbiamo conoscere il concetto di allocazione della memoria e le diverse funzioni di allocazione della memoria in C. Esistono due tipi di allocazione della memoria nel linguaggio di programmazione C: allocazione della memoria statica e allocazione della memoria dinamica.

Allocazione di memoria in C:

Le risorse sono costantemente a corto di approvvigionamento. In ogni momento, abbiamo lavorato per migliorare l'uso delle risorse. Questa è stata la base del nostro sviluppo. L'allocazione della memoria è un'idea che è correlata a questo obiettivo. In modo che possano essere create variabili effettive, la memoria deve essere assegnata alle variabili che costruiamo. Ora c'è una distinzione tra il modo in cui pensiamo che le cose accadano e come accadono. Quando pensiamo di fare tutto, pensiamo di iniziare dall'inizio; Tuttavia, quando un computer fa una variabile "X", è più simile alla distribuzione; Il sistema sceglie solo una cella di memoria per x da un ampio pool di celle di memoria disponibili. È come una camera d'albergo assegnata al nome di qualcuno da molte camere preesistenti gratuite o libere. Questo esempio molto probabilmente ha chiarito come il computer gestisce l'allocazione della memoria.

Ora arrivano ai tipi di allocazione della memoria consentiti nel linguaggio di programmazione C sono l'allocazione della memoria statica e l'allocazione della memoria dinamica. Quando definiamo le variabili, stiamo impostando tutte le variabili che verranno utilizzate in modo che il compilatore capisca cosa stiamo facendo perché la variabile utilizzata è una parte essenziale del programma che l'utente desidera, non un simbolo rouge che galleggia attraverso.

Esempio di vita reale

Quando dichiariamo variabili, il compilatore le assegna a spazi di memoria vacanti come se fossero in un hotel con stanze vuote preesistenti che verranno assegnate a diversi nomi dell'ospite. Come puoi vedere, questo viene fatto prima che il programma esegua; Non è possibile utilizzare questo approccio per allocare le variabili mentre il programma è in esecuzione. È qui che entra in gioco l'allocazione di memoria dinamica.

Esempio di programmazione

Prendi un array come esempio in quanto la dimensione viene dichiarata prima e non è possibile regolare le dimensioni di un array una volta che è stato dichiarato. È possibile che l'array specificato non sia abbastanza grande. Puoi allocare manualmente la memoria durante il runtime per porre rimedio a questo problema. Questo si chiama allocazione di memoria dinamica. Esistono diverse funzioni di biblioteca sul linguaggio di programmazione C che ci aiuta ad allocare la memoria dinamicamente, che sono definite nel file di intestazione ""; Le funzioni sono le seguenti:

  1. funzione malloc (),
  2. funzione caloc (),
  3. funzione realloc (),
  4. funzione gratuita ().

La sintassi per la funzione Malloc

Malloc è l'abbreviazione dell'allocazione della memoria. Un blocco di memoria con il numero specificato di byte è riservato nella funzione Malloc (). Restituisce anche un puntatore vuoto che può essere trasformato in qualsiasi tipo di punta. La sintassi per la funzione Malloc nella programmazione C è scritta di seguito:

#p = (castType*) malloc (dimensione);

Se dovessimo scrivere un'espressione per allocare la memoria per una variabile intera, sarebbe così,

p = (int *) malloc (100 * sizeof (int));

Il pezzo di codice scritto sopra mette da parte 400 byte di spazio di memoria. La ragione di ciò è che il tipo di dati interi ha una dimensione di 4 byte. Il puntatore "P" tiene traccia del byte iniziale della memoria assegnata.

Sintassi per la funzione caloc ()

L'allocazione contigua è l'abbreviazione del termine "caloc."Nella programmazione C, quindi la funzione caloc () viene utilizzata per allocare una certa quantità di memoria e successivamente ripristinarla a zero. Questo indirizzo di memoria viene restituito come puntatore vuoto, che può successivamente essere convertito nel tipo necessario. La funzione accetta due argomenti che determinano la quantità di memoria da assegnare nel suo insieme. La funzione Sintassi per Calloc () nella programmazione C è scritta di seguito:

p = (castType*) caloc (n, dimensione);

Ora esamineremo la funzione Realloc nella programmazione C.

La funzione realloc () in c:

Realloc sta per la riallocazione. Il metodo realloc () può essere utilizzato per alterare le dimensioni della memoria precedentemente allocata se la memoria allocata dinamicamente è inadeguata o più del necessario. La funzione RealLoc () restituisce un puntatore a un nuovo oggetto con le dimensioni fornite dalle dimensioni e dealloca il vecchio oggetto a cui si fa riferimento da PTR. Fino al più piccolo delle due dimensioni, gli elementi del nuovo oggetto sono simili a quelli dell'oggetto precedente prima della separazione. Eventuali byte nel nuovo oggetto che sono più grandi delle dimensioni dell'oggetto vecchio hanno valori indefiniti. Realloc () dovrebbe essere usato solo per la memoria allocata dinamicamente; Vale la pena notare. Il comportamento non è noto se lo spazio di memoria non è allocato dinamicamente.

Sintassi per la funzione realloc ()

La sintassi per la funzione realloc () nella programmazione C è scritta di seguito:

# realloc (PTR, nuove dimensioni);

Nell'espressione di cui sopra, Realloc è una funzione che ridimensiona la posizione della memoria puntata da PTR. Il titolo della variabile puntatore che deve essere ridimensionato è "PTR". "Nuove dimensioni" si riferisce alla nuova dimensione dell'area di memoria. Ha il potenziale per essere più piccolo o più grande della dimensione attuale.

Sebbene tutte queste funzioni abbiano assegnato con successo lo spazio di memoria, non sono ancora libere e dobbiamo liberarli esplicitamente. È qui che è necessaria la funzione libera () per liberare lo spazio assegnato nella memoria. La sintassi per la funzione Free () è scritta di seguito:

#Free (PTR);

"PTR" è il nome del puntatore il cui spazio di memoria verrà liberato.

Ora esamineremo l'esecuzione della funzione realloc () in Ubuntu 20.04 ambiente.

Implementazione della funzione realloc () in ubuntu 20.04:

Come sappiamo sulla base della funzione realloc (), ora possiamo implementare questa funzione in Ubuntu 20.04 ambiente. Per eseguire il nostro codice, avviare il terminale dal tuo desktop Ubuntu e digitare "CD desktop" per arrivare alla directory desktop quindi, con questo comando "tocco", puoi fare un .C file con il nome e l'estensione di .C. Quindi vai sul tuo desktop e trova e apri il tuo .file c. Ora creeremo un po 'di codice in quel file per utilizzare il metodo realloc () per riallocare la memoria.

Inizialmente, abbiamo aggiunto le due librerie più significative della lingua C. Successivamente, abbiamo iniziato il nostro programma principale. Abbiamo dichiarato una variabile puntatore e reso il suo valore uguale a "null". Che abbiamo utilizzato il metodo realloc () e aggiunto due parametri ad esso. L'istruzione "if" viene aggiunta per verificare la condizione. Se la condizione dichiarata va bene, il compilatore eseguirà l'istruzione printf.

Dopo aver premuto il pulsante Salva, chiudi il file. Torna al terminale e digita "G ++" seguito dal nome del tuo file e ".C ”estensione per produrre il file di output. Ora puoi eseguire quel file digitando "./"Seguito dal tuo".estensione fuori "per ricevere l'output desiderato.

Come puoi vedere, abbiamo effettivamente riallocato lo spazio di memoria del puntatore usando il metodo RealLoc () e ora abbiamo una migliore comprensione di come funziona questa funzione in un'applicazione C a causa di questo esempio.

Conclusione:

In questo tutorial, abbiamo studiato il concetto di allocazione della memoria e i suoi diversi tipi. Lo scopo di questo articolo era di conoscere i pro e i contro del metodo di allocazione della memoria e dove usarli. Le diverse funzioni nel metodo dinamico di allocazione della memoria sono state discusse anche in dettaglio in questo articolo. Alla fine, abbiamo anche implementato la funzione realloc () nel linguaggio di programmazione C in Ubuntu 20.04 ambiente per comprendere meglio questo concetto.