我正在努力克服C ++中对象内存分配的一些概念。
假设我们有一个班级:
class Foo {
public:
Foo();
~Foo() {
delete bar;
}
private:
int* bar = new int(5); //Dynamically allocated with 'new'
}
..我们像这样实例化这个类:
int main(void) {
Foo f1(); //Automatically allocated
return 0;
}
..我想知道的是,在执行main()
函数之后,是否调用了对象析构函数,从而为bar
变量释放了动态分配的内存?
如果没有,如何在不能调用delete f1;
的情况下释放该内存?那么我们是否总是需要为一个对象动态分配内存,以便能够为该对象调用delete?例如:
int main(void) {
Foo f1 = new Foo(5); //Dynamically allocated with 'new'
delete f1; //Releases 'bar' memory by calling destructor
return 0;
}
非常感谢任何信息!