Zgodnie z dokumentacją Qt:Czy QObject rozróżnia między dziećmi przydzielonymi do stosu i sterty podczas usuwania?
QObjects organizowania się w obiektowych drzew. Po utworzeniu obiektu QObject z innym obiektem jako obiektem nadrzędnym obiekt automatycznie doda się do listy dzieci podrzędnych(). Jednostka nadrzędna przejmuje na własność obiekt ; tj. automatycznie usunie swoje dzieci z destruktora .
Dla mnie, który oznacza, że QObject jest usuwany, przechodzi i wywołuje delete na wszystkich wskaźnikach, które przechowuje na swojej liście dzieci.
Jednak nie jest konieczne, aby dzieci były dynamicznie przydzielane, a tworzenie drzew QObject z obiektami przydzielonymi do stosu jest całkowicie legalne.
Zgodnie ze standardową specyfikacją, wywoływanie delete na wskaźniku, który nie wskazuje na dynamicznie przydzielany obiekt, jest niezdefiniowanym zachowaniem, które może spowodować wszystko, od "niczego" do awarii programu.
IMO jest mało prawdopodobne w przypadku QObject, który jest niemal szkieletem niemal całego zbioru klas Qt, aby polegać na czymś, co może powodować niezdefiniowane zachowanie.
A więc, czy QObject rozróżnia między kasami alokowanymi przez stos i stertę podczas usuwania? A jeśli tak, to jak dokładnie?
Tak, powinna wziąć spojrzeć na destructor przed pytaniem całego ... 10x – dtech
Niektóre interesujące pokrewne: Przeznaczyć QObjects korzeniowych w stosie; wszystko inne (dzieci) na kupce https://stackoverflow.com/questions/19331396/how-does-qt-delete-objects-and-hach-is-the-best-way-to-store-qobjects?rq= 1 –