引自:https://blog.csdn.net/man_sion/article/details/77196766 //模板类作为友元时要先有声明template <typename T> class SmartPtr; //辅助类template <typename T> class RefPt ...
分类:
编程语言 时间:
2020-06-16 23:16:35
阅读次数:
82
同样的道理,既然C++11只负责sp_counted_base的原子性,那么shared_ptr本身就没有保证线程安全了,加入两个线程同时访问同一个shared_ptr对象,一个进行释放(reset),另一个读取裸指针的值,那么最后的结果就不确定了,很有可能发生野指针访问crash。 ...
分类:
编程语言 时间:
2020-06-14 20:40:22
阅读次数:
64
21、通过智能指针管理第三方库分配的内存 0、课前秀 + 第三方库分配的内存一般需要通过第三方库提供的释放接口才能释放,由于第三方库返回的指针一般都是原始指针,在用完之后没有调用第三方库的释放接口,就很容易造成内存泄露。 1、示例 + 第三方库的释放(可能会存放跟new,delete一样,忘记释放或 ...
分类:
编程语言 时间:
2020-05-25 19:51:58
阅读次数:
78
20、weak_ptr弱引用的智能指针 0、课前秀 + 弱引用指针weak_ptr是用来监视shared_ptr的,不会使引用计数加1,它不管理shared_ptr内部的指针,主要是为了监视shared_ptr的生命周期。 + weak_ptr没有重载操作符 和` `,因为它不共享指针,不能操作资源 ...
分类:
编程语言 时间:
2020-05-25 19:15:37
阅读次数:
66
19、unique_ptr独占的智能指针 0、课前秀 1、unique_ptr + 不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr。 + 可以通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,这样它本身就不再拥有原来 ...
分类:
编程语言 时间:
2020-05-22 16:45:17
阅读次数:
59
优化动态分配内存的变量 除了使用非最优算法外,乱用动态分配内存的变量就是C++程序中最大的性能杀手。C++中的一些特性使用标准库容器、智能指针和字符串等动态分配内存的变量。这些特性可以提高C++程序的编写效率。但是,也有副作用:当发生性能问题时,new就不再是你的好朋友了。 C++变量回顾 每个C+ ...
分类:
其他好文 时间:
2020-05-21 19:48:51
阅读次数:
49
最近面试的时候面试官问了我一个问题。unique_ptr和shared_ptr到底有什么区别?我一时语塞。回来之后我痛定思痛,决定好好的研究一下智能指针的问题。现在已经研究的差不多了,决定好好的总结一下。 一、智能指针的用途 二、智能指针的特性 三、智能指针的种类与用途 3.1 最原始的智能指针au ...
分类:
其他好文 时间:
2020-05-19 12:55:53
阅读次数:
66
Chromium智能指针使用指南 爱喝咖啡的ronhu关注 0.1252017.11.05 23:26:44字数 2,052阅读 1,773 什么是智能指针? 智能指针是一种特殊类型的“局部对象”,表现如同裸指针,但是具备离开作用域(out of scope)时主动释放所指向对象的能力。因为C++没 ...
分类:
其他好文 时间:
2020-05-18 18:46:11
阅读次数:
73
1.智能指针的作用 C++程序设计中需要频繁地动态分配堆内存,堆内存的申请和释放都由程序员管理。程序员管理堆内存提高了程序的效率,但是整体来说堆内存的管理非常麻烦,且容易造成动态分配的堆内存没有正确释放或无法释放,导致资源浪费,程序运行速度变慢等问题。为了解决这些问题C++11提出了智能指针的概念, ...
分类:
其他好文 时间:
2020-05-13 12:07:12
阅读次数:
68
1、shared_ptr 1、shared_ptr多个指针指向相同的对象。shared_ptr使用引用计数,每个shared_ptr的拷贝 都指向相同的能存。每次使用它一次,该对象内部的引用计数加1,指向该对象的shared_ptr指针 每减少一个,该对象内部的引用计数就减1,当引用计数为0时,就自 ...
分类:
其他好文 时间:
2020-05-12 09:42:26
阅读次数:
78