以下代码在堆栈上创建一个对象:
Object o;
在堆上创建对象时,我们可以使用:
Object* o;
o = new Object();
而不是:
Object* o = new Object();
当我们将堆对象创建分成两行并在第二行(o = new object()
)调用构造函数时,这是否意味着在第一行(Object* o
)中指针是在堆栈上创建的?那么Object o
将对象放在堆栈上,而Object* o
将指向未来对象的指针放在堆栈上?
我的第二个问题涉及这两行代码是否在类之外调用。我最近读到(堆栈或堆中的 C 中的全局内存管理?)全局变量不包含在堆栈/堆中,但实际上是内存的另一部分?如果是这种情况,是否会Object* o
创建一个指针,该指针将位于内存的另一部分并指向堆对象?