C++智能指针

一、智能指针

【C++】智能指针详解
现代 C++:一文读懂智能指针

关于智能指针的引入

1、动态内存使用new和delete操作,一般情况下成对出现,需要显式操作(显式销毁)
2、动态分配内存常见问题,分配后未销毁(内存泄漏),销毁后还继续使用(访问非法内存,可能导致段错误)
3、。。

关于指针的概念

项目描述关键字
裸指针普通的指针,char* p,typeA* a等
独占资源智能指针单独占用资源,unique_ptr
共享资源智能指针多个指针贡献资源,可以多个指针和资源关联,用引用计数来表示多关联关系shared_ptr
共享资源的观察者和贡献资源指针类似,但它不增加资源的引用技术weak_ptr
废弃auto_ptr

unique_ptr

1、单独占用资源;
2、unique_ptr指针的构建和初始化就是 RAII 思想 的体现,
具体为,离开unique_ptr指针的作用预,他所关联的资源将会自动释放(???具体怎么释放);
3、(move-only)只能从一个指针关联转移到另一个指针,
假设a,b都是unique_ptr类型的指针,他不能有类似 a=b 的操作,编译器不过;

shared_ptr

1、一种使用引用计数的资源维护手段,引用计数为0了,释放指针关联资源,引用计数有指针类内部维护。
2、创建shared_ptr时,将会在堆内分配资源大小的内存和控制快(控制资源的引用计数)的内存,
这两个内存不一定连续
3、使用 make_shared 创建指针可以使资源内存和控制快内存连续

weak_ptr

weak_ptr 需要和 shared_ptr 配合使用,

二、D/Q指针

D指针/Q指针在C++中的使用

1、二进制兼容性

某链接库有更新,直接替换库,而应用程序无需重新链接,,那么这个动态库是 二进制兼容的
如果修改动态库,只需要重新链接,而无需对应用做任何其他修改,那么这个库就是 源码兼容的

2、源码兼容性

3、享元模式

4、D/Q指针如何实现二进制兼容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值