Говоря о C ++, объекты, созданные в стеке, нельзя использовать, когда программа вышла из области, в которой она была создана. Поэтому, как правило, когда вы знаете, что вам не нужна переменная после функции или после закрывающей скобки, вы может создать его в стеке.
Говоря конкретно о Qt, Qt помогает программисту, обрабатывая много памяти для управления объектами кучи. Для объектов, производных от QObject
(почти все классы с префиксом "Q
"), конструкторы принимают необязательный параметр parent. Затем родительский объект владеет объектом, и когда родительский объект удаляется, все принадлежащие ему объекты также удаляются. По сути, ответственность за уничтожение детей переходит на родительский объект. При использовании этого механизма в куче должны быть созданы дочерние элементы QObject
.
Короче говоря, в Qt вы можете легко создавать объекты в куче, и до тех пор, пока вы устанавливаете правильного родителя, вам придется беспокоиться только об уничтожении родителя. Однако в целом в C ++ вам нужно помнить, чтобы уничтожать объекты кучи или использовать умные указатели.