unique_ptr <int>悬空指针

New*_*ewB 0 c++ unique-ptr dangling-pointer

C++代码:

unique_ptr<int> a  = make_unique<int>(159);
  auto var = a.get(); // Edited a => a.get() sorry
  a.release();
  std::cout<<*var<<std::endl; // prints "159"
Run Code Online (Sandbox Code Playgroud)

var在这段代码之后是悬空指针吗?

Ker*_* SB 5

您的代码完全有效.a.release()从唯一指针中分离动态分配的对象,因此a不再拥有整数,但没有删除任何内容.

delete var但是,除非你最终没有打电话,否则你会有内存泄漏.