¿Cómo puedo liberar memoria en un vector de puntero? Aquí está el código:¿Cómo puedo liberar un vector de puntero?
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();
descubrí que .erase()
no liberar memoria, ni llama al destructor; Traté de usar delete
en cada entrada de lista con una iteración, pero se bloquea después de una iteración. Ya se verificó si la entrada de la lista ya era NULL, para evitar cualquier error. ¿Me estoy perdiendo algo? Además, debo usar solo STL, no necesito Boost.
Tenga en cuenta que llamar a 'borrar' en un puntero' NULL' es seguro. –
Es posible que desee utilizar un 'boost :: ptr_vector' de la biblioteca Boost Ptr Container en su lugar. –
¿por qué usar 'A *' cuando lo haría 'A' simple? –