¿Existe alguna manera de eliminar un puntero que no ha sido asignado con el operador new en el destructor? En caso afirmativo, ¿debo eliminarlo en el destructor?
Por ejemplo,
class Test{
private:
int* foo;
public:
Test(int* foo){this->foo = foo;}
}
En este caso, ¿hay alguna forma de eliminar foo en el destructor? ¿Tendré que eliminar foo en el destructor o al menos establecerlo en nullptr?
davy.ai
Sí, en este caso, puedes eliminar
foo
en el destructor de la claseTest
. Es necesario eliminarfoo
en el destructor para evitar fugas de memoria. Sifoo
permanece sin eliminar, resultará en memoria no utilizada que no puede ser accedida o liberada, lo que lleva a una fuga de memoria. También es una buena práctica establecerfoo
comonullptr
después de eliminarlo para evitar punteros colgantes. El código actualizado se vería así: