-->
  • Home
    • WorldInformatic's history
  • Operative Systems
    • Mac
    • Windows
  • Some guide
  • Programming language
    • C
    • Java
    • HTML
  • Smartphone
    • Apple iOS
    • Android
  • Games
    • Smartphone Games
    • Web Games
    • PC e Console
  • News
    • Apple News
    • Android/Google News
  • Enjoy!
  • Contact us

C: corso completo

- Parte 01: Introduzione
- Parte 02: Fasi, variabili, operatori e software
- Parte 03: Tipi di dato, direttive e 1° programma
- Parte 04: Tipi di formato, printf e scanf
- Parte 05: Istruzioni condizionali e di iterazione
- Parte 06: Funzioni e progetti su più file
- Parte 07: Puntatori e passaggio dei parametri
- Parte 08: Array, stringhe e strutture
- Parte 09: Gestione file: file di testo
- Parte 10: Gestione file: file binari
- Parte 11: Allocazione dinamica della memoria
- Parte 12: Creare ed utilizzare le liste nel C
- Parte 13: Ordinamento di array e strutture
- Parte 14: Esercizi sul linguaggio C

C: corso completo

27 febbraio 2013

Immagine
Ciao 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:
  • Chiede al sistema di allocare un'area di memoria grande dim byte;
  • Restituisce l'indirizzo dell'area di memoria allocata (questo è un puro indirizzo, ossia un puntatore senza alcun tipo, per cui è necessario effettuare un cast esplicito);
  • Ha bisogno di sapere quanty byte allocare.

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:
Immagine
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:
Persone.txt
Matteo Pumo 20
Asdrubale Pinco 16
Genoveffa Croc 25
Steve Jobs 56
Mario Rossi 14
Funzioni.h
Immagine
Funzioni.c
Immagine
Main.c
Immagine
Vi lascio qui da scaricare il codice di questo programma, qualora vogliate:
allocazionedinamica.zip
File Size: 4 kb
File Type: zip
Download File

Se volete esercitarvi con degli esercizi, andate qui: Esercizi sull'allocazione della memoria.

                                                                                                                               
Pumo
Ciao a tutti,
Pumo Matteo

Tweet
    Condividi



comments powered by Disqus

Social
Aiutate a diffondere il sito, cliccando qui




Segui @WInformatic

Autore
Salve a tutti!
Mi chiamo Pumo Matteo.
Per saperne di più: Biografia


Categorie
  • -> Mac
  • -> Windows
  • -> Apple iOS
  • -> Android
  • -> Programmazione
  • -> Guide varie
  • -> Hardware
  • -> Games
  • -> News



Social Network

Follow us on Social Network:

Topics

Windows
Smartphone games

If you want, make a donation

TO CONTACT US, USING THE PAGE IN THE TOP

Author

Immagine
I'm Matteo Pumo. University of Bologna - Faculty of computer Engeneering.
- My Biography

Italian version of site


Site made by Pumo Matteo © Copyright 2013 - Bologna, Italy - All rights reserved - It's prohibit all reproduction form, partial or total, of materials.