共享指针和唯一指针

wangkaixin-yy / 2023-09-05 / 原文

唯一指针不能复制,它的参数不能使用new关键字创建。

std::unique_ptr<Entity>entity=std::make_unique<Entity>();

std::unique_ptr<Entity>e0=entity;

共享指针有一个引用计数,当计数为0就宣布释放内存。

{

  std::shared_ptr<Entity>e0;

  {

    std::shared_ptr<Entity>entity=std::make_shared<Entity>();

    e0=entity;

  }//不释放内存

}//释放内存

弱指针可以使共享指针的计数无效。

std::shared_ptr<Entity1>shared_entity = std::make_shared<Entity1>();
std::weak_ptr<Entity1>weakEntity = shared_entity;//使shared_entity不增加计数,使其共享无效