我试着摆弄unique_ptr。
为什么标有MK1(注释)的行不会导致程序崩溃?
调用Foo析构函数。通过使用unique_ptr我认为对象的析构函数都被调用并删除了为对象本身分配的内存。
我猜它的独特性,所以我不应该让其他人指向同一个Foo?
void ExMemory() {
Foo *simplePtr;
{
std::unique_ptr<Foo> p1(new Foo);
simplePtr = &*p1; // Does unique_ptr increment a reference counter?
p1->bar();
simplePtr->bar();
}
simplePtr->bar(); // MK1: Why can I do this? Foo destructor is called.
delete simplePtr;
simplePtr->bar(); // Causes the error I expected earlier.
}
int main() {
cout << "Hello main" << endl;
ExMemory();
int x;
cin >> x;
return 0;
}