Jestem całkiem nowy w Qt i zastanawiam się nad kilkoma podstawowymi rzeczami związanymi z zarządzaniem pamięcią i życiem obiektów. Kiedy muszę usunąć i / lub zniszczyć moje obiekty? Czy cokolwiek z tego jest obsługiwane automatycznie?
W poniższym przykładzie, które z utworzonych przeze mnie obiektów muszę usunąć? Co dzieje się ze zmienną instancji, myOtherClass
gdy myClass
zostanie zniszczona? Co się stanie, jeśli w ogóle nie usunę (ani nie zniszczę) moich obiektów? Czy to będzie problem z pamięcią?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Jak widać, są to dość łatwe rzeczy dla początkujących, ale gdzie mogę się o tym dowiedzieć w łatwy sposób?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> To nie jest powód, dla którego jest to bezpieczne. W Qt 4.7.4 elementy potomne QObject są usuwane bezpośrednio (przezdelete
, zobacz qobject.cpp, wiersz 1955). Powodem, dla którego można bezpiecznie usunąć najpierw obiekty podrzędne, jest to, że obiekt QObject mówi swojemu rodzicowi, aby zapomniał o nim, gdy zostanie usunięty.