swisstux
2) così in basso non sono ancora andato

, anche se credo che possa servire ad esempio per mettere della memoria da qui a li senza dover copiarla tutta, basta puntarla
grazie, inizio a comprendere.
ciao ciao
Non pensare sia così in basso....
Praticamente la heap è la parte di memoria in cui memorizzi oggetti durante il corso del programma...
Cerco di spiegarmi....
Se dichiari una variabile:
int var1;
Lo spazio di memoria da riservare viene calcolato a tempo di compilazione.
Inoltre te non devi gestire la sua deallocazione.
Se invece durante il corso del programma hai bisogno di più memoria (hai bisogno di un vettore più grande come esempio più semplice, oppure vuoi far definire le dimensioni del vettore all'utente...) puoi richiederla e verrà riservato dello spazio nella heap.
La differenza con le altre variabili è che devi essere te personalmente a rilasciare la memoria per quella variabile.....
es:
int size;
int *vett;
cin>>size;
vett=new int [size];
Questi sono le cose più semplici che puoi farci...
Un altro esempio che mi viene in mente è questo:
Supponiamo che hai un array statico di 100 elementi.
Questo array non contiene interi ma oggetti molto più complicati e pesanti. (classi o strutture... cioè raggruppamenti di dati con metodi a loro associati..).
Se l'array fosse di oggetti avresti uno spreco enorme di memoria quando magari utilizzi solo i primi 2 campi dell'array.
Se invece di un array di oggetti, crei un array di puntatori ad oggetti, risparmierai tantissimo spazio, perchè darai l'indirizzo ai puntatori solo quando creerai effettivamente l'oggetto...