导图社区 cpp智能指针
这是一篇关于c智能指针的思维导图,内容详细介绍了C++中智能指针的相关知识,主要内容包括:vs中内存泄漏的检测,智能指针,适合C++开发者学习和查阅,帮助其更好地理解和使用智能指针进行内存管理。
这是一篇关于C容器的思维导图,主要内容包括:序列式容器,容器适配器(都不支持迭代器),关联式容器,容器使用注意事项。总结了C++中各类容器的使用方法和注意事项,适合作为学习和复习C++容器知识的参考资料。
这是一篇关于Qt是什么的思维导图,主要内容包括:1.Qt介绍,2.Qt 下载与安装,3.Qt Creator,4.Visual Studio,5. Qt 模块解析,6.需要的C 知识。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
c++智能指针
vs中内存泄漏的检测
#define _CRTDBG_MAP_ALLOC #include<crtdbg.h> 检查内存泄漏的宏,需要加在程序头部
_CrtDumpMemoryLeaks( )---> 检查内存是否泄漏 放在main函数的最后return前面
注册程序结束回调函数 需要加<stdlib.h>头文件
智能指针
unique_ptr独享智能指针
智能指针(unique)
包含memory头文件
利用 RALL 机制管理内存, 在构造函数中获取资源, 在析构函数中释放资源
1.裸指针(使用原生指针来管理内存、 手动申请、手动释放、 比较麻烦、容易忘记)-->必须手动释放内存
2. 使用智能指针解决以上问题
unique_ptr独享指针
不能被拷贝
只能被移动
3. 管理数组
能通过智能指针直接访问存储对象的成员
自定义删除器(如何释放内存)
定义删除器不能用 std::make_unique
必须要自己定义 unique_ptr
使用仿函数
使用全局函数
使用function 只要满足条件就可以用
成员函数
get--->获取原生指针
release --> 释放所有权 把所有权交给你,需要自己释放资源
reset -->当不传递或传递nullptr时释放资源 如果传递了一个新的资源,会释放原来的资源,接管新的资源
swap --> 交换
搭配容器使用
shared_ptr共享智能指针
定义共享指针(多个指针引用同一资源, 会增加引用计数,释放会减少引用计数, 当引用计数为0时,释放资源)
std::shared_ptr<类型> 变量名 初始化可用( ) 或 =
不要让不同的智能指针对象管理同一个对象 (必须要用智能指针进行拷贝, 智能指针拷贝给智能指针才行)
管理数组
删除器
weak_ptr监视指针
必须搭配shared_ptr使用, 用来监视shared_ptr
主要用来解决循环引用问题
定义
std::weak_ptr<类型> 变量
通过监视指针判断shared_ptr是否有效
expired() 判断所观察资源是否已经释放