考虑以下类:
struct MyClass {
int mId;
MyClass(int id): mId(id) {}
~MyClass() { std::cout << "deleting: " << mId << std::endl; }
};
以及用法:
std::shared_ptr<MyClass> p(new MyClass(0));
MyClass& m = *p;
m = MyClass(2);
结果是:
deleting: 2
deleting: 2
请帮助我理解:
- 为什么有两个
MyClass(2)
对象(在析构函数日志中做出的假设) - 这是内存泄漏吗?不应该
MyClass(0)
泄漏吗?
谢谢你。