PDA

View Full Version : [c++] Deallocazione dei puntatori agl'oggetti


robs05
17-09-2008, 09:58
Salve scusate la domanda potrebbe sembrar stupida ma vorrei togliermi questo dubbio.

La diff tra C++ e Java è che in java non è necessario distruggere gli oggetti in quanto c'è il garbage collector che provvede ad eliminare gli oggetti che non vengono più utilizzati, invece in C++ esiste il distruttore e quindi quando non si fa più riferimento ad un oggetto si invoca delete.

Quello che causa la non distruzioni di oggetti in C++ è memoria allocata nell'Heap inutilmente da parte di oggetti che non verranno mai più usati.

La mia domandina stupida è:

Scrivo un sorgente C++ creo oggetti e non lo distruggo.

compilo ed eseguo.

Adesso al momento dell'esecuzione nell'heap vengono allocati questi oggetti, quindi se creo un ciclo infinito creando oggetti senza mai distruggerli prima o poi avrò terminato la memoria.

Nel momento in cui chiudo l'applicazione la memoria mi ritorna disponibile? e quindi se lancio un altra applicazione la quale alloca altri oggetti non dovrebbe darmi alcun problema?

o devo distruggere per forza gli oggetti allocati dalla precedente applicazione?

banryu79
17-09-2008, 10:06
Nel momento in cui chiudo l'applicazione la memoria mi ritorna disponibile? e quindi se lancio un altra applicazione la quale alloca altri oggetti non dovrebbe darmi alcun problema?

o devo distruggere per forza gli oggetti allocati dalla precedente applicazione?
Che io sappia al termine di un processo viene automaticamente rilascita la memoria che era stata riservata per lo stesso, ci pensa il sitema operativo.


o devo distruggere per forza gli oggetti allocati dalla precedente applicazione?

Deallocare la memoria allocata è sempre una pratica raccomandata e una buona abitudine, comunque.

robs05
17-09-2008, 10:35
si infatti è cosi al termine il processo rilascia tutte le risorse che possiede e poi saranno disponibili per i processi che erano in attesa di quelle risorse....

ci avrei dovuto pensare prima.

grazie