Как я понимаю, следующий код является прекрасным способом создания QObject
QLabel *label = new QLabel("label");
QWidget window;
label->setParent(&window);
window.show();
Поскольку я читаю везде"родительский объект становится владельцем вновь созданного объекта -и в конце концов вызывает delete ", или" составной объект становится владельцем дочерних объектов, поэтому, пока родительские функции выполнены, вы можете быть уверены, что дочерние объекты QObject будут уничтожены при уничтожении родительского объекта "(из КакQt удаляет объекты? И как лучше всего хранить QObjects? )
Может кто-нибудь сказать мне, как Qt может "взять на себя ответственность" за QObject?Более технически: как Qt (которая является библиотекой и имеет собственную среду выполнения) может вызывать оператор delete для указателя, который я создал с оператором new из другой среды выполнения?Почему не происходит сбой?
РЕДАКТИРОВАТЬ
Я добавляю эту ссылку, поскольку весь смысл вопроса заключается в следующем:
"Theкод, выполняющийся в DLL, может использовать другую библиотеку времени выполнения C ++, что означает, что компоновка кучи будет отличаться. DLL может вообще использовать другую кучу.
Вызов delete (в основной программе)указатель, выделенный библиотекой DLL (или наоборот), приведет к (в лучшем случае) немедленному падению или (в худшем случае) повреждению памяти, для отслеживания которого потребуется некоторое время ».(из C ++ mix new / delete между библиотеками? )