智能指针之shared_ptr

本文浅谈智能指针shared_ptr,它能管理指针内存,实现共享所有权的垃圾收集。当最后一个shared_ptr实例被销毁时,托管对象会被删除,使用shared_ptr::reset和shared_ptr::use_count等方法进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shared_ptr浅谈

简介

  • 管理一个指针的存储,提供一个有限的垃圾收集工具,可能与其他对象共享该管理。
  • shared_ptr类型的对象具有获取指针的所有权并共享所有权的能力:一旦他们拥有了所有权,当他们的最后一个成员释放所有权时,一个指针的所有者会对它的删除负责。
  • shared_ptr类型的对象具有获取指针的所有权并共享所有权的能力:一旦他们拥有了所有权,当他们的最后一个成员释放所有权时,一个指针的所有者会对它的删除负责。
  • shared_ptr对象一旦自己被销毁,就会释放他们共同拥有的对象的所有权,或者一旦它们的值通过赋值操作或对shared_ptr的显式调用进行更改,即:重置。一旦所有共享所有权的shared_ptr对象都释放了这个所有权,托管对象就会被删除(通常是通过调用::delete,但是在构造上可能会指定一个不同的删除器)。
  • 用法
header 1 header 2
default (1) constexpr shared_ptr() noexcept;
from null pointer (2) constexpr shared_ptr(nullptr_t) : shared_ptr() {}
from pointer (3) template explicit shared_ptr (U* p);
with deleter (4) template shared_ptr (U* p, D del);template shared_ptr (nullptr_t p, D del);
with allocator (5) template shared_ptr (U* p, D del, Alloc alloc);template shared_ptr (nullptr_t p, D del, Alloc alloc);
copy (6) shared_ptr (const shared_ptr& x) noexcept;template shared_ptr (const shared_ptr& x) noexcept;
copy from weak (7) template explicit shared_ptr (const weak_ptr& x);
move (8) shared_ptr (shared_ptr&& x) noexcept;template shared_ptr (shared_ptr&& x) noexcept;
move from managed (9) template shared_ptr (auto_ptr&& x);template shared_ptr (unique_ptr
// shared_ptr constructor example
#include <iostream>
#include <memory>

struct C {
  int* data;};

int main () {
  std::shared_ptr<int> p1;
  std::shared_ptr<int> p2 (nullptr);
  std::shared_ptr<int> p3 (new int);
  std::shared_ptr<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值