27 febbraio 2013Ciao ragazzi, in questa undicesima parte del corso completo di C tenuto su questo sito, vi voglio parlare dell'allocazione dinamica della memoria, un concetto di grande importanza nel C. In questa guida imparerete a creare array dinamici, o meglio, di grandezza non decisa staticamente, ma in base all'effettivo bisogno del programmatore.
Finora abbiamo visto che variabili e array dovevano essere dichiarati in modo statico e con una grandezza prefissata, senza sapere però se questa grandezza sarebbe stata sufficiente o inutile perchè troppa; ora riusciremo a creare un array dopo aver scoperto quanto effettivamente grande deve essere!! MALLOC() E FREE() Per allocare memoria al momento del bisogno, si utilizza la funzione malloc(): void * malloc(size_t dim); La funzione malloc() quindi:
Ogni volta che viene allocata memoria, questa deve essere poi però liberata (o deallocata), così il sistema operativo sa che quella porzione di memoria è di nuovo disponibile per altri scopi; per deallocare memoria si utilizza la funzione free(): void free(void* p); Esempio veloce di malloc(), utilizzata per allocare memoria ad un array sufficente per contenere un certo numero di interi, indicato dall'utente:
Ora vi mostro un esempio di come può essere utilizzata l'allocazione dinamica della memoria, utilizzando strutture, array e file di testo; in sostanza il programma si occupa di leggere da un file di testo persone.txt tutti i dati li sopra, poi crea un array di strutture con quei dati allocato dinamicamente con la dimensione necessaria. Successivamente si occupa di stampare a video l'array di strutture così creato e anche di calcolare e indicare la persona più grande:
Funzioni.c
Main.c
Vi lascio qui da scaricare il codice di questo programma, qualora vogliate:
![]()
Se volete esercitarvi con degli esercizi, andate qui: Esercizi sull'allocazione della memoria.
Pumo Ciao a tutti, Pumo Matteo |
Social Aiutate a diffondere il sito, cliccando qui Segui @WInformatic Autore Salve a tutti! Mi chiamo Pumo Matteo. Per saperne di più: Biografia Categorie
|