









Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Appunti università della calabria - ingegneria informatica
Tipologia: Appunti
1 / 15
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










Elisa Marengo Universit`a degli Studi di Torino Dipartimento di Informatica
Quando scriviamo un programma e fondamentale scegliere le variabili, le strutture dati e il loro tipo in modo adeguato al problema che dobbiamo risolvere. Ad esempioe importante capire quando usare una matrice, quando usare un insieme di variabili, quando usare un array... `E importante capire anche quale tipo associare loro.
Queste decisioni dipendono dall’uso che ne vogliamo fare e dal problema che dobbiamo risolvere.
Allocazione Dinamica Permette di definire variabili che possono essere create o accresciute in fase di esecuzione.
Per allocare memoria in modo dinamico si usa l’operatore new. Per liberare memoria allocata in modo dinamico si usa l’operatore delete.
Si usano per richiedere una quantita di memoria in modo dinamico. L’operatore newe seguito da un identificatore di tipo. Se e necessario allocare piu di un elemento, il numero di elementi da allocare `e indicato tra parentesi quadre. Restituisce un puntatore all’inizio del blocco di memoria allocato.
type * pointer = new type ; type * pointer = new type [ n_of_elements ];
int * pointer ; pointer = new int [5];
int * pointer ; int n ; cin > > n ; pointer = new int [ n ];
Il sistema assegna dinamicamente lo spazio per n elementi int; restituisce il puntatore al primo elemento della sequenza.
Come posso accedere agli elementi dell’array?
Con l’aritmetica dei puntatori Con la notazione a indice
pointer [0];
pointer [1]; *( pointer +1);
int * pointer ; int n ; cin > > n ; pointer = new int [ n ];
Il sistema assegna dinamicamente lo spazio per n elementi int; restituisce il puntatore al primo elemento della sequenza.
Come posso accedere agli elementi dell’array?
Con l’aritmetica dei puntatori Con la notazione a indice
pointer [0];
pointer [1]; *( pointer +1);
La memoria dinamica e allocata in una zona di memoria detta heap. La memoriae una risorsa limitata Potrebbe finire Deve essere liberata quando non serve pi`u
Se l’allocazione fallisce: Viene lanciata un’eccezione di tipo bad alloc Un’eccezione causa il termine del programma
Esiste un modo per verificare che l’allocazione sia andata a buon fine?
int * p = new int ; if (! p ){ // allocazione fallita }
La memoria dinamica e allocata in una zona di memoria detta heap. La memoriae una risorsa limitata Potrebbe finire Deve essere liberata quando non serve pi`u
Se l’allocazione fallisce: Viene lanciata un’eccezione di tipo bad alloc Un’eccezione causa il termine del programma
Esiste un modo per verificare che l’allocazione sia andata a buon fine?
int * p = new int ; if (! p ){ // allocazione fallita }
Tenere sempre traccia della memoria dinamica utilizzata.
int x =5; int * p = new int ; p =& x ;
Come faccio ad accedere alla memoria dinamica allocata? E stata allocata una certa quantita di memoria dinamica. Tale memoria non e stata deallocata. Il puntatore a tale memoriae andato perso: memory leak. Tale memoria verra deallocata solo al termine del programma. Questo potrebbe essere un problema, ad esempio: se il programmae scritto per restare in attesa e non terminare. se si presentano molte situazioni di questo tipo la memoria potrebbe esaurirsi.
Tenere sempre traccia della memoria dinamica utilizzata.
int x =5; int * p = new int ; p =& x ;
Come faccio ad accedere alla memoria dinamica allocata? E stata allocata una certa quantita di memoria dinamica. Tale memoria non e stata deallocata. Il puntatore a tale memoriae andato perso: memory leak. Tale memoria verra deallocata solo al termine del programma. Questo potrebbe essere un problema, ad esempio: se il programmae scritto per restare in attesa e non terminare. se si presentano molte situazioni di questo tipo la memoria potrebbe esaurirsi.