C ++ unique_pointer和指针

时间:2017-01-06 18:23:51

标签: c++ shared-ptr

我试着摆弄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;
}

0 个答案:

没有答案