Надеюсь, этот вопрос найдет вас хорошо. Я немного озадачен этим. Я действительно не понимаю, как дерево модели объекта QT обрабатывает память с помощью умных указателей. ,
Вот Код: < /p>
child.h
#ifndef CHILD_H
#define CHILD_H
#include
#include
class Child : public QObject
{
Q_OBJECT
public:
explicit Child(QObject *parent = nullptr) : QObject{parent}
{
qDebug()
Когда Программа выходит из сфера действия, в процессе уничтожения моего статического Qlist его элементы родителей QsharedPointers сначала будут уничтожены. Ребенок - это указатель Qshared внутри родительского указателя. Следовательно, он будет автоматически удалять, потому что это интеллектуальный указатель с отсчета ссылок до 0. < /P>
Тогда мой родительский класс будет уничтожен. QWIDGET с наследниками от QObject, QT будет применять механизм разрушения дерева объектов. Что означает, что QT автоматически удалит детей родителей, которые уже должны быть уничтожены QsharedPointer выше ...
Мой вопрос: почему мое приложение не рухнет?
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-crashing