大连全瓷种植牙齿制作中心 发表于 2024-6-17 19:21:41

C++11智能指针 unique_ptr、shared_ptr、weak_ptr、循环引用、定制删除器

目录

[*]智能指针

[*]场景引入 - 为什么需要智能指针?
[*]内存泄漏

[*]什么是内存泄漏
[*]内存泄漏的危害
[*]内存泄漏分类
[*]如何避免内存泄漏

[*]智能指针的使用及原理

[*]RAII

[*]简易例程

[*]智能指针的原理

[*]智能指针的拷贝题目


[*]智能指针的发展汗青

[*]std::auto_ptr

[*]模拟实现auto_ptr例程:

[*]这种方案存在的题目:


[*]Boost库中的智能指针

[*]unique_ptr

[*]模拟实现简易unique_ptr例程

[*]shared_ptr

[*]模拟实现简易shared_ptr例程:

[*]多线程测试例程

[*]shared_ptr循环引用题目

[*]原因图解分析:


[*]weak_ptr

[*]模拟实现简易weak_ptr

[*]解决循环引用题目


[*]定制删除器

[*]仿函数版本实现
[*]lambda版本实现
[*]定制删除器版本shared_ptr模拟实现



智能指针

场景引入 - 为什么需要智能指针?

C++有些场景下,处理异常安全题目时特殊繁琐
void example{        int *p1 = new int;//可能会抛异常1        int *p2 = new int;//可能会抛异常2        Func();             //可能会抛异常3                delete p1;        delete p2;}int main(){        try{                example();        }        catch(std::exception& e){                std::cout
页: [1]
查看完整版本: C++11智能指针 unique_ptr、shared_ptr、weak_ptr、循环引用、定制删除器