当我们使用new创建一个对象时, 它被分配在堆上。但是,我们正在实例化的类的成员会发生什么?例如,
class foo {
Bar x;
Bar *y;
foo() {
x = 10;
y = new Bar();
}
}
这里,x 是一个对象,而 y 是 Bar 的一个实例。它们都分配在堆上吗?所以如果 foo F的一个对象是在一个方法中本地创建的,那么当 F 超出范围时y会发生什么?
另外,如果F是在堆上创建的,我们什么时候可以得出F悬空的结论(没有人指向它)?因为,可能没有对 F 的引用,但可能对Y的引用。