View Full Version : [c++] distruzione vector e list
mistergks
29-02-2016, 11:29
Ho un dubbio...
Serve distruggere un vector o una list?
Magari nel distruttore
Se si come?
Il metodo clear() pulisce ma non distrugge.
Si potrebbe fare un for e delete per ogni elemento?
mistergks
01-03-2016, 01:44
Cioè per un puntatore *p basta deallocare con delete p;
Per un array dinamico v [] basta deallocare con delete [] v;
E per un vector o una list??
Avviene tutto in automatico!?
mistergks
02-03-2016, 01:50
Ah ok ... Quindi non necessita la deallocazione con delete nè un vector né una list!
no, non serve
i container std sono strutture a dimensione dinamica fatte apposta per ovviare il problema della gestione manuale della memoria: tu aggiungi e togli elementi, senza doverti preoccupare di fare le (de)allocazioni necessarie, sarà il container internamente a gestirsi il tutto
occhio però, se all'interno del vector o della lista salvi dei ptr, questi si li devi distruggere, ma credo sia ovvio :)
mistergks
02-03-2016, 16:19
no, non serve
i container std sono strutture a dimensione dinamica fatte apposta per ovviare il problema della gestione manuale della memoria: tu aggiungi e togli elementi, senza doverti preoccupare di fare le (de)allocazioni necessarie, sarà il container internamente a gestirsi il tutto
occhio però, se all'interno del vector o della lista salvi dei ptr, questi si li devi distruggere, ma credo sia ovvio :)
Cioè? Puoi farmi un esempio?
mistergks
02-03-2016, 18:29
Tipo vector<string*> v;
Dovrei deallocare ogni string??
tomminno
14-03-2016, 09:50
Tipo vector<string*> v;
Dovrei deallocare ogni string??
Si, anche se string* non ha molto senso.
Sebbene oggi come oggi in C++ è bene evitare l'utilizzo diretto di puntatori in favore degli smart pointer unique_ptr/shared_ptr
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.