Come posso liberare memoria in un vettore puntatore? Ecco il codice:Come posso liberare un vettore puntatore?
class A
{
private:
int x,y,z;
public:
A(param1, param2, param3)
{
x=param1;
y=param2;
z=param3;
}
~A()
{
//prompts an alertbox, warning me about the successful call of the destructor;
}
};
...
vector<A*> list;
list.push_back(new A(1,2,3));
list.erase(list.begin()+index);//SHOULD delete the object from the memory;
list.clear();
ho scoperto che .erase()
non liberare la memoria, né chiama il distruttore; Ho provato ad usare delete
su ogni voce di lista con un'iterazione, ma si blocca dopo una iterazione. Già controllato se la voce della lista fosse già NULL, per evitare qualsiasi errore. Mi manca qualcosa? Inoltre, devo usare solo STL, non serve Boost.
Nota che chiamare 'delete' su un puntatore' NULL' è sicuro. –
Si potrebbe voler usare un 'boost :: ptr_vector' dalla libreria Boost Ptr Container. –
perché usare 'A *' quando normale 'A' farebbe? –