Distruttore C++: come funziona?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
lup0z
Prode Principiante
Messaggi: 110
Iscrizione: giovedì 11 gennaio 2007, 14:36

Distruttore C++: come funziona?

Messaggio da lup0z »

Ciao a tutti!
Nn riesco a trovare nulla che mi spieghi la corretta sequenza di "distruzione" delle variabili in un programma in c++.
Mi spiego meglio: in una funzione vengono distrutte prima le variabili locali, l'oggetto anonimo di ritorno e successivamente i parametri attuali da sinistra a destra (dato che il costruttore, a meno della lista d'inizializzazione, allcoa da destra a sinistra).
ma nel complesso?
Tra variabili globali, statiche, classi metodi, funzioni esterne.....?

Grazie per l'aiuto! ;)
Avatar utente
mediv
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 365
Iscrizione: mercoledì 28 giugno 2006, 13:13

Re: Distruttore C++: come funziona?

Messaggio da mediv »

Bè la dstruzione delle variabile avviene esattamente nel ordine contrario di come vengono costruite(almeno quelle che non sono state create dinamicamente con la new, queste variabili sono di competenza del programmatore), in quanto le variabili istanziate vengono inserite nell'ordine di cotruzione nello stack, che non è altro che una pila.
Avatar utente
jack84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: lunedì 12 febbraio 2007, 11:13

Re: Distruttore C++: come funziona?

Messaggio da jack84 »

Bè la dstruzione delle variabile avviene esattamente nel ordine contrario di come vengono costruite
Sì anche perchè altrimenti ti perderesti dei puntatori essenziali per deallocare la memoria. Comincia deallocando i particolari più piccoli della tua struttura come nodi che contengono direttamente informazioni, per poi deallocare i vettori che contenevano il resto. Se procedi deallocando prima la struttura che contiene tutte le altre non sarà più possibile liberare quelle porzioni di memoria
Non sempre si può prevedere, ma ci si può sempre preparare
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: Distruttore C++: come funziona?

Messaggio da bite »

Le variabili globali dichiarate in moduli (files) diversi purtroppo non hanno un ordine definito di distruzione. Se questo ha importanza, bisogna evitarle.
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Distruttore C++: come funziona?

Messaggio da thelo »

lup0z ha scritto:
Tra variabili globali, statiche, classi metodi, funzioni esterne.....?
le variabili globali e le statiche non sono legate ad una istanza particolare...il loro ciclo di vita inizia e termina con quello del programma che le ha lanciate.
Se sono legate a funzioni esterne a classi, vengono istanziate alla chiamata della funzione e distrutte alla chiusura...
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti