Tôi khá mới đối với Qt và đang thắc mắc về một số nội dung cơ bản với quản lý bộ nhớ và tuổi thọ của các đối tượng. Khi nào tôi cần xóa và / hoặc hủy các đối tượng của mình? Có bất kỳ điều nào trong số này được xử lý tự động không?
Trong ví dụ dưới đây, tôi cần xóa đối tượng nào trong số các đối tượng tôi tạo? Điều gì xảy ra với biến cá thể myOtherClass
khi myClass
bị hủy? Điều gì xảy ra nếu tôi không xóa (hoặc phá hủy) các đối tượng của mình? Đó sẽ là một vấn đề với bộ nhớ?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
Như bạn có thể thấy đây là công cụ khá dễ dàng cho người mới nhưng tôi có thể tìm hiểu về điều này một cách dễ dàng ở đâu?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> Đây không phải là lý do tại sao nó an toàn. Trong Qt 4.7.4, QObject con bị xóa trực tiếp (thông quadelete
, xem qobject.cpp, dòng 1955). Lý do tại sao việc xóa các đối tượng con là an toàn trước tiên là QObject yêu cầu cha mẹ của nó quên nó khi nó bị xóa.