Ho un vettore che riempio con i puntatori agli oggetti. Sto cercando di imparare una buona gestione della memoria, e ho alcune domande generali:Cosa devo fare prima di eliminare elementi in un vettore di puntatori agli oggetti allocati dinamicamente?
- E 'vero che quando mi sono fatto con il vettore, devo ciclo attraverso di essa e chiamare cancellare su ogni puntatore?
- Perché non devo chiamare delete sul vettore o qualsiasi altra variabile che dichiaro senza la nuova istruzione, ma cancellare deve essere chiamato sui puntatori?
- Il C++ gestisce la liberazione della memoria dei puntatori per me se il vettore viene dichiarato in una funzione che restituisce (facendo sì che il vettore non rientri nello scope)?
3: C++ libererà naturalmente la memoria utilizzata dai puntatori, poiché sono allocati nello stack. Ma gli oggetti puntati da quei puntatori sono probabilmente allocati sull'heap e quindi dovranno essere cancellati. E naturalmente i puntatori nel vettore potrebbero puntare a impilare oggetti allocati, che potrebbero non essere cancellati. In genere non si dovrebbero mai memorizzare puntatori non-const per impilare oggetti allocati in un vettore. – smerlin
Grazie! E 'stato molto chiaro! –