Я не понимаю, как Qt может удалить все дети QObject без двойного удаления чего-либо, если он был статически распределен.Как Qt обрабатывает выделенные стек объекты
В принципе, если я делаю это обычным способом, это выглядит следующим образом:
QWidget Window(nullptr);
QPushButton* button = new QPushButton(&Window);
Window.show();
return App.exec();
//When app ends, Window gets deleted
//because it was statically allocated
//And then, Window deletes button because it's its child.
Но я могу сделать это без аварии:
QWidget Window(nullptr);
QPushButton button(&Window);
Window.show();
return App.exec();
//When app ends, button then Window get deleted
//because they were statically allocated
//And then, Window (should) delete button AGAIN because it's its child, thus crashing
//the program. But it doesn't. Why ?
ли Qt знаю, как я создал QPushButton, или я что-то пропустил?
Да, вы пропустили что-то, а именно, что неопределенное поведение не определенно. –
@ н.м .: Ничего неопределенного здесь, насколько я могу судить. –
@MattiVirkkunen, может быть, ничего не определено в этом примере, я только говорю, что отсутствие сбоя ничего не доказывает. –