【发布时间】:2021-04-30 06:42:55
【问题描述】:
class Foo {
int num;
};
class Bar {
public:
Bar() {
Foo f1;
}
};
int main() {
Bar* b = new Bar();
return 0;
}
在上面的代码中,我在堆上创建了一个 Bar (b) 的实例。 在 Bar 的构造函数中,创建了一个 Foo (f1) 的实例。由于 b 是在堆上创建的,而 f1 是临时的,我不确定 - 调用构造函数时它存储在哪里?
对象的内存是在栈上存储的时候自动处理的,那么如果f1存储在堆上,如何在Bar的构造函数完成后自动销毁呢? 另一方面,如果存储在栈上,那么堆上的对象b怎么指向它呢?
【问题讨论】:
标签: c++ memory-management dynamic-memory-allocation