【发布时间】:2013-09-17 01:38:27
【问题描述】:
考虑以下类:
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)不应该泄漏吗?
谢谢。
【问题讨论】:
-
把 prints 放到“Constructor/Copy Constructor/Assignment/Destructor”中,你可以更清楚地看到创建和销毁。
-
呃.. @LokiAstari 你让我觉得很尴尬 :)
标签: c++ memory-leaks shared-ptr dereference