저는 Qt를 처음 접했고 메모리 관리와 객체의 수명에 대한 몇 가지 기본적인 사항이 궁금합니다. 개체를 언제 삭제 및 / 또는 파괴해야합니까? 자동으로 처리되는 것이 있습니까?
아래 예에서 내가 만든 개체 중 삭제해야하는 것은 무엇입니까? 인스턴스 변수 가 파괴 myOtherClass
되면 어떻게됩니까 myClass
? 객체를 전혀 삭제 (또는 파괴)하지 않으면 어떻게됩니까? 그게 기억에 문제가 될까요?
MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
MyOtherClass *myOtherClass;
};
MyClass.cpp
MyClass::MyClass() {
myOtherClass = new MyOtherClass();
MyOtherClass myOtherClass2;
QString myString = "Hello";
}
보시다시피 이것은 매우 초보자에게 쉬운 일이지만 쉽게 배울 수있는 곳은 어디입니까?
(It does this by issuing signals, so it is safe even when you delete child manually before the parent.)
-> 이것이 안전한 이유가 아닙니다. Qt 4.7.4에서 QObject 자식은 직접 삭제됩니다 (를 통해delete
qobject.cpp, 1955 행 참조). 자식 개체를 먼저 삭제하는 것이 안전한 이유는 QObject가 삭제 될 때 부모에게이를 잊어 버리도록 지시하기 때문입니다.