Следующий код создает объект в стеке:
Object o;
При создании объекта в куче мы можем использовать:
Object* o;
o = new Object();
а не:
Object* o = new Object();
Когда мы разделяем создание объекта кучи над двумя строками и вызываем конструктор во второй строке (o = new object()
), означает ли это в первой строке (Object* o
), указатель был создан в стеке? Итак, Object o
помещает объект в стек, тогда как Object* o
помещает указатель на будущий объект в стеке?
Второй вопрос заключается в том, что две строки кода вызывались вне класса. Недавно я прочитал (Глобальное управление памятью в C в стеке или куче?), что глобальные переменные не содержатся в стеке/куче, а на самом деле другая часть памяти? Если это так, может ли Object* o
создать указатель, который будет находиться в этой другой части памяти, и он указывает на объект кучи?