Soy bastante nuevo en Qt y me pregunto algunas cosas básicas con la gestión de la memoria y la vida de los objetos. ¿Cuándo debo eliminar y / o destruir mis objetos? ¿Algo de esto se maneja automáticamente?
En el siguiente ejemplo, ¿cuál de los objetos que creo debo eliminar? ¿Qué sucede con la variable de instancia myOtherClass
cuando myClass
se destruye? ¿Qué sucede si no elimino (o destruyo) mis objetos en absoluto? ¿Será eso un problema de memoria?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Como puede ver, esto es algo bastante fácil para los principiantes, pero ¿dónde puedo aprender sobre esto de una manera fácil?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Esta no es la razón por la que es seguro. En Qt 4.7.4, los hijos de QObject se eliminan directamente (a través dedelete
, consulte qobject.cpp, línea 1955). La razón por la que es seguro eliminar primero los objetos secundarios es que un QObject le dice a su padre que lo olvide cuando se elimina.