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?
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?