class B {
private:
int* i = nullptr;
public:
B() : i(new int(5)) {
}
~B() {
cout << "exe ~B" << endl; }
void f() {
shared_ptr<B> v = make_shared<B>(*this); }
};
首先很明确的一点 new出来的东西不delete是不会释放的
void bf1() {
B* b = new B();
}
没有任何输出打印,未执行析构函数。
void bf1() {
B* b = new B();
delete b;
}
./a.out
exe ~B
这个正确。
void bf1() {
B* b = new B();
b->f();
delete b;
}
./a.out
exe ~B
exe ~B