PDA

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!

-MiStO-
02-03-2016, 10:15
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