Saya cukup baru mengenal Qt dan bertanya-tanya tentang beberapa hal dasar dengan manajemen memori dan kehidupan objek. Kapan saya perlu menghapus dan / atau menghancurkan objek saya? Apakah semua ini ditangani secara otomatis?
Pada contoh di bawah ini, objek mana yang saya buat yang perlu saya hapus? Apa yang terjadi pada variabel contoh myOtherClass
ketika myClass
dimusnahkan? Apa yang terjadi jika saya tidak menghapus (atau menghancurkan) objek saya sama sekali? Akankah itu menjadi masalah bagi ingatan?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Seperti yang Anda lihat, ini adalah hal yang sangat mudah bagi pemula, tetapi di mana saya dapat mempelajarinya dengan cara yang mudah?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Ini bukanlah alasan mengapa ini aman. Dalam Qt 4.7.4, anak-anak QObject dihapus secara langsung (melaluidelete
, lihat qobject.cpp, baris 1955). Alasan mengapa aman untuk menghapus objek turunan terlebih dahulu adalah karena QObject memberitahu orang tuanya untuk melupakannya ketika dihapus.