当进行拷贝或赋值操作时,每个shared_ptr都会纪录有多少个其他shared_ptr指向相同的对象: auto p = make_shared<int>(50);//p指向的对象只有p一个引用者 auto q = p; //p和q指向相同对象,此对象有两个引用者; 智能指针类能记录有多少个sha ...
分类:
编程语言 时间:
2020-07-28 22:13:59
阅读次数:
134
C++ 中动态内存管理通过一对运算符来完成: ,在动态内存中为对象分配空间并返回一个指向该对象的指针。 ,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。 新标准提供两种智能指针类型来管理动态对象,智能指针的行为类似常规指针,重要的区别是智能指针负责自动释放所指向的对象,新标准提供的这两种 ...
分类:
其他好文 时间:
2020-03-15 13:23:16
阅读次数:
54
在使用基本指针类型时,因为要手动释放指针指向的内存,常常容易造成内存泄漏,特别是异常分支很多的情况下。而智能指针类型就是将基本指针类型封装成模板类,以便更好地管理内存。 智能指针都包含一个explicit构造函数,因此基本指针类型不能隐式转换成智能指针,需要显式调用。 shared_ptr<doub ...
分类:
编程语言 时间:
2020-03-05 22:22:30
阅读次数:
116
动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的。有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种 智能指针 类型来管理动态对象。智能指针的行为类似常规指针,区别在于它负责自动释 ...
分类:
编程语言 时间:
2019-02-20 22:48:41
阅读次数:
265
在C++11中有两个智能指针类型来管理动态对象,share_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指对象。 我们知道指针或引用在离开作用域时是不会进行析构的,但是类在离开作用域时会自动执行析构函数,所以我们可以用一个类来实现指针指针(unique_ptr本质上是一个类,只 ...
分类:
其他好文 时间:
2018-12-03 13:59:29
阅读次数:
808
头文件:#inlcude<memory> 智能指针类型: auto_ptr (C++98)弃用 shared_ptr, unique_ptr ,weak_ptr (C++11) 指针的初始化函数:make_shared(C++11),make_unique (C++14),返回bool 以上均位于n ...
分类:
编程语言 时间:
2018-10-29 02:01:16
阅读次数:
293
前几节我们开发的智能指针类和异常类族并没有继承自Object,现在我们需要将它们进行整合,作为DTLib这个类库的基础设施。整合的时候需要遵循现代软件的架构模式。 遵循经典设计准则 DTLib中所有类位于单一继承树,可以根据下图中的方式进行整合: 在异常类族中有了新的成员InvalidOperati ...
分类:
其他好文 时间:
2018-08-19 13:54:17
阅读次数:
114
1.c++(OOGP) 与数据结构与算法 1.一定要有一门自己比较熟悉的语言。 我由于使用C++比较多,所以简历上只写了C++。C++的特性要了解,C++11要了解一些,还有STL。面试中常遇到的一些问题,手写代码实现一个string类,手写代码实现智能指针类,以及STL中的容器的实现机制,多态和继 ...
分类:
其他好文 时间:
2018-07-01 11:40:00
阅读次数:
139
智能指针的意义 现代c++开发库中最重要的类模板之一 c++中自动内存管理的主要手段 能够在很大程度上避开内存相关的问题 STL中的智能指针auto_ptr 生命周期结束时,销毁指向的内存空间 不能指向堆数组,只能指向堆对象(变量) 一片堆空间只属于一个智能指针对象 多个智能指针对象不能指向同一片堆 ...
分类:
其他好文 时间:
2018-06-23 01:32:39
阅读次数:
149
我们之前在 C++ 的学习中学习了有关智能指针的知识。那么智能指针的意义是现代 C++ 开发库中最重要的类模板之一;是 C++ 中自动内存管理的主要手段,它能够在很大程度上避开内存相关的问题。在 STL 标准库中的智能指针为 auto_ptr,它的特点是:1、生命周期结束时,销毁指向的内存空间;2、不能指向堆数组,只能指向堆对象(变量);3、一片堆空间只属于一个智能指针对象;4、多个智能指针对象不能指向同一片堆空间。
分类:
其他好文 时间:
2018-06-02 21:34:20
阅读次数:
210