Рассмотрим этот пример.Будут ли выделенные объекты кучи выделены в стеке?
class StaticlyManagedObject
{
//some class members....
}
class DynamiclyManagedObject
{
StaticlyManagedObject _staticlyManagedObject; //is this still allocated at the stack?
}
class Foo
{
DynamiclyManagedObject * _dynamiclyManagedObject; //will be allocated in the heap.
Foo()
{
_dynamiclyManagedObject = new DynamiclyManagedObject();
}
}
Мне сказали, что, когда мы не используем динамическое управление памятью в C++, то выделяется в стеке, и нам не нужно управление памятью.
Однако в этом примере. у нас есть динамически выделенный объект, который называется DynamiclyManagedObject I, который создает этот объект внутри конструктора Foo. Мой вопрос заключается в том, что происходит со статически управляемым элементом данных объекта DynamiclyManagedObject?
Он все еще создан в стеке или ... из-за того, что DynamiclyManagedObject, созданный в куче, каждый член данных попадает в кучу.
Большое спасибо за хорошее объяснение. Все ответы, которые я получил ниже, одинаково велики. Дополнительная благодарность за упоминание продолжительности хранения. Быстрый поиск показал так много ответов. Теперь я могу найти в нем больше. – Nusakan