Qt konusunda oldukça yeniyim ve bellek yönetimi ve nesnelerin ömrü ile ilgili bazı temel şeyleri merak ediyorum. Nesnelerimi ne zaman silmem ve / veya yok etmem gerekir? Bunlardan herhangi biri otomatik olarak işleniyor mu?
Aşağıdaki örnekte, oluşturduğum nesnelerden hangisini silmem gerekiyor? Örnek değişkene ne olur myOtherClass
ne zaman myClass
yok edilir? Nesnelerimi hiç silmezsem (veya yok etmezsem) ne olur? Bu hafızada bir sorun olur mu?
Sınıfım.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
Sınıfım.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Gördüğünüz gibi, bu oldukça yeni başlayanlar için kolay bir şey ama bunu kolay bir şekilde nereden öğrenebilirim?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Güvenli olmasının nedeni bu değil. Qt 4.7.4'te, QObject çocukları doğrudan silinir (aracılığıyladelete
, bkz. Qobject.cpp, satır 1955). Öncelikle alt nesneleri silmenin güvenli olmasının nedeni, bir QObject'in ebeveynine silindiğinde onu unutmasını söylemesidir.