Funzione malloc in c

Funzione malloc in c

“All'interno della lingua C, l'allocazione della memoria è un concetto molto noto e abbiamo molte funzioni per allocare i ricordi a diversi mutabili, io.e., Memoria dinamica, memoria statica, ecc. La funzione Malloc () di C è una di quelle funzioni che non solo alloca la memoria a uno specifico mutabile, ma restituisce anche un puntatore dell'indirizzo in cui quella memoria è stata memorizzata. Questo articolo ti aiuterebbe con l'uso di Malloc in C durante l'utilizzo di Ubuntu 20.04 Sistema. Rendi aggiornato il tuo sistema prima di saltare sull'implementazione del codice C perché ti aiuterà a eseguire senza problemi i codici sulla shell. Pertanto, l'abbiamo aggiornato finora e ci ha chiesto di aggiungere la password per l'utente che attualmente funziona. L'abbiamo fornita una password e il processo è stato terminato in pochi secondi."

Attuaremo questo articolo in C lingua; Pertanto, richiediamo che il suo compilatore sia installato alla nostra fine. Linux ha l'utilità C "GCC" come compilatore che può essere installato con "Apt", come abbiamo fatto nell'immagine mostrata. Ora, puoi rendere il tuo errore gratuito in pochi secondi.

Prima di iniziare con il nostro esempio C, ci deve essere un file in cui aggiungiamo i codici C per la compilazione e l'esecuzione. Pertanto, stiamo creando un file "file.C". Il file deve avere un ".C ”estensione alle sue estremità per identificarlo come un file c.

Esempio 01

All'interno di questa illustrazione del codice, utilizzeremo la funzione Malloc () per allocare la memoria a una variabile utilizzando un valore e visualizzazione costanti se la memoria è stata assegnata correttamente o no. Dobbiamo avviare questo codice C con le intestazioni della libreria C principale che devono avere in un codice, e senza questi, il nostro codice sarebbe inutile da eseguire. Il codice contiene una funzione principale () che eseguirà tutto ciò di cui abbiamo bisogno per l'allocazione della memoria e l'errore visualizzando se la memoria non viene assegnata correttamente. La funzione inizia dall'inizializzazione di una variabile intera costante "A" come vuota.

Abbiamo specificato una variabile a doppia punta a doppio punta "V" per allocare la memoria usando la funzione Malloc (). Questa funzione Malloc () utilizza la variabile intera costante “A” per l'allocazione di memoria al puntatore “M."Esiste un'istruzione" if-else "utilizzata per verificare se la memoria è stata assegnata alla variabile puntatore" M "o non è riuscita ad allocare la memoria. Quindi, è la parte "se" che verificherebbe se il valore di "m" è nullo o no. Se è "null", la funzione printf () utilizzata al suo interno mostrerà un messaggio di errore, i.e., "Nessuna memoria" con una rottura della linea alla fine usando il "\ n."

Inoltre, l'istruzione "Exit (-1)" terminerà. Mentre la parte altrimenti userebbe 2 dichiarazioni di funzioni printf (), i.e., La prima istruzione per visualizzare il valore di una variabile intera costante “A” e la seconda istruzione per visualizzare il messaggio di successo con la memoria specificata. Salviamo il nostro codice prima di realizzare il codice sorgente compilato per l'esecuzione.

#includere
#includere
int main ()
const int a = "";
doppio lungo *m = (lungo doppio *) malloc (sizeof (lungo doppio) *a);
if (m == null)
printf ("Errore: nessuna memoria \ r \ n");
uscita (-1);
altro
printf ("value = %d \ n", a);
printf ("Great, Memory: %lf \ n", *m;

Alla compilazione, ha mostrato alcuni avvertimenti, ma possiamo ignorarli per un momento. Durante l'esecuzione del codice compilato, abbiamo ricevuto un messaggio di errore "nessuna memoria" perché non avevamo inizializzato alcun valore intero alla variabile "A" per l'allocazione di memoria.

Stiamo aggiornando lo stesso codice sorgente aggiungendo un valore intero "500" per una variabile "a" in modo da poter assegnare una memoria esatta a una variabile puntatore "m."Salva questo codice aggiornato per ora.

#includere
#includere
int main ()
const int a = 500;
doppio lungo *m = (lungo doppio *) malloc (sizeof (lungo doppio) *a);
if (m == null)
printf ("Errore: nessuna memoria \ r \ n");
uscita (-1);
altro
printf ("value = %d \ n", a);
printf ("Great, Memory: %lf \ n", *m;

Dopo la compilazione di questo codice aggiornato, non abbiamo ricevuto errori, nemmeno un avvertimento che è stato mostrato prima. Dopo l'esecuzione di questo codice compilato e aggiornato, abbiamo ottenuto il valore della variabile "A" visualizzata insieme alla memoria allocata in punti decimali, i.e., Non visualizza un valore di memoria esatto.

Esempio 02

Diamo una buona occhiata a un altro esempio per allocare la memoria a una variabile specifica. Pertanto, inizia questo esempio con l'uso di "stdio.H "e" stdlib.H ”intestazioni prima di ogni altra cosa. Il metodo principale () ha ottenuto la sua esecuzione inizia dalla Dichiarazione di un puntatore di carattere "A" variabile. La riga successiva utilizza la funzione Malloc () per creare una memoria per un puntatore di caratteri della dimensione 10. Questa è un'allocazione iniziale di memoria per il puntatore “a."

Dopo questo, la funzione strcpy () è qui per copiare una stringa di parole su un puntatore variabile “A."L'uso di printf () è un must per visualizzare il nostro valore di stringa appena salvato in puntatore variabile" a "insieme al suo indirizzo di memoria sulla shell. Il carattere speciale "%s" indica il valore della stringa, mentre "%u" indica l'indirizzo da visualizzare. Successivamente, stiamo riallocando una nuova memoria alla stessa variabile puntatore del tipo di carattere “A” della dimensione 20 usando la funzione realloc () della lingua C. Esiste un uso della funzione strcat () per concatenare un puntatore variabile "A" con un nuovo valore di stringa "linguaggio."

Successivamente, abbiamo nuovamente utilizzato l'istruzione printf () per visualizzare il valore della stringa appena concatenato insieme all'indirizzo di un puntatore variabile “A."Dopo questo, abbiamo provato la funzione" gratuita "sul puntatore variabile" A "per liberare la memoria allocata. Salviamo prima questo codice e poi proviamo il compilatore GCC sulla shell per compilarlo rapidamente.

#includere
#includere
int main ()
char *a;
A = (char *) malloc (10);
strcpy (a, "benvenuto in c");
printf ("valore = %s, indirizzo: %u \ n", a, a);
strcat (a, "lingua");
printf ("valore = %s, indirizzo: %u \ n", a, a);
gratuito (a)

Ora, compileremo il nostro codice con "GCC" come presentato sotto. Sebbene l'uso della funzione "strcpy" mostri un avvertimento, non ci impedisce di eseguire il codice.

Dopo aver compilato il file.File C C, l'abbiamo eseguito sull'applicazione della console con "./UN.out ”query di Linux per eseguire i file di codice. Vedrai un output di due righe che mostrano due valori diversi per un puntatore variabile "A" ma lo stesso indirizzo, i.e., valori vecchi e aggiornati. Ciò significa che la memoria allocata è stata aggiornata, ma l'indirizzo rimane lo stesso per una variabile "a."

Conclusione

Questo è tutto! Ora sarai in grado di creare i tuoi codici per assegnare la memoria a una variabile specifica nel sistema utilizzando la funzione Malloc () di C.