太长了 参考链接: 【1】https://www.jianshu.com/p/a462a35c9481 【2】https://blog.csdn.net/k346k346/article/details/81478223 【3】https://blog.csdn.net/flowing_wind/a ...
分类:
其他好文 时间:
2019-10-06 18:46:53
阅读次数:
84
一. make系列函数 (一)三个make函数 1. std::make_shared:用于创建shared_ptr。GCC编译器中,其内部是通过调用std::allocate_shared来实现的。 2. std::make_unique:C++14中加入标准库。 3. std::allocate ...
分类:
其他好文 时间:
2019-10-05 22:25:39
阅读次数:
129
一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法 ...
分类:
编程语言 时间:
2019-10-05 18:47:26
阅读次数:
89
一. weak_ptr的概况 (一)weak_ptr的创建 1. 直接初始化:weak_ptr<T> wp(sp); //其中sp为shared_ptr类型 2. 赋值: wp1 = sp; //其中sp为shared_ptr类型 wp2 = wp1; //其中wp1为weak_ptr类型 (二)常 ...
分类:
其他好文 时间:
2019-10-05 01:06:44
阅读次数:
136
一. shared_ptr的基本用法 (一)与unique_ptr的比较 比较 shared_ptr unique_ptr 备注 初始化 ①shared_ptr<T> sp; sp.reset(new T()); ②shared_ptr<T> sp(new T()); ③shared_ptr<T> ...
分类:
其他好文 时间:
2019-10-04 16:52:00
阅读次数:
164
一. unique_ptr的基本用法 (一)初始化方式 1. 直接初始化:unique<T> myPtr(new T); //ok。但不能通过隐式转换来构造,如unique<T> myPtr = new T()。因为unique_ptr构造函数被声明为explicit。 2. 移动构造:unique ...
分类:
其他好文 时间:
2019-10-03 12:58:41
阅读次数:
114
问:智能指针可以对指针的引用数量进行计数,一个智能指针释放时,别的智能指针怎么知道的? 这是一个脑筋急转弯题。。。。 不像普通的变量,静态成员变量是被所有类对象共享的,不同的对象可以访问对方的该静态成员变量,因此静态成员变量和类对象并没有联系。 The static keyword has anot ...
分类:
编程语言 时间:
2019-10-02 01:01:23
阅读次数:
306
1.reset的作用: reset() 相当于释放当前所控制的对象reset(T* p) 相当于释放当前所控制的对象,然后接管p所指的对象reset(T*, Deleter) 和上面一样 2.get: 获取对象指针 ...
分类:
其他好文 时间:
2019-09-30 23:52:45
阅读次数:
79
简介 C++没有内存自动回收机制,对堆内存的管理就是简单的new和delete,每次new出来的内存都需要手动delete释放。但由于忘记、流程复杂或者异常退出等,都有可能导致没有执行delete释放内存,造成内存泄漏。 在实际工程中,我们往往希望将精力放在应用层上而不是费劲心思处理语言的细枝末节( ...
分类:
其他好文 时间:
2019-09-29 12:30:23
阅读次数:
67
引文:C++对指针的管理提供了两种解决问题的思路:1.不允许多个对象管理一个指针2.允许多个对象管理一个指针,但仅当管理这个指针的最后一个对象析构时才调用deleteps:这两种思路的共同点就是只允许delete一次,下面将讨论的shared_ptr就是采用思路1实现的ps:智能指针不是指针,而是类... ...
分类:
编程语言 时间:
2019-09-21 17:16:33
阅读次数:
105