STL:: allocator之deallocate destory的区别与联系
c++中的allocator是标准库中的一个类,负责内存分配管理。
下面是《STL源码剖析》中一个简单allocator实现的部分源代码:
deallocate:
template <class T>inline void _deallocate(T* buffer){::operator delete(buffer); //为什么不用 delete [] ? ,operator delete 区别于 delete //operator delete 是一个底层操作符}
destory:
template <class T>inline void _destory(T *ptr){ptr->~T();}
destory负责调用类型的析构函数,销毁相应内存上的内容(但销毁后内存地址仍保留)
deallocate负责释放内存(此时相应内存中的值在此之前应调用destory销毁,将内存地址返回给系统,代表这部分地址使用引用-1)
参考:《STL源码剖析》 P44-45;
《C++ Primer》 P428-429.
STL:: allocator之deallocate destory的区别与联系相关推荐
- STL allocator
为了精密分工,STL allocator决定将这两阶段区分开来.内存配置由alloc:allocate()负责,内存释放由alloc::deallocate()负责: 对象建构由::construct ...
- stl中unordered_map 和 map的区别 ?
stl中unordered_map 和 map的区别 目录 一.hash_map与unordered_map 二.unordered_map与map 三.unordered_map与unordered ...
- 浅析STL allocator
一般而言,我们习惯的 C++ 内存配置操作和释放操作是这样的: 1 class FOO{}; 2 FOO *pf = new FOO; 3 delete pf; 我们看其中第二行和第三行,虽然都是只有 ...
- SGI STL allocator
简单实现是一个allocator C++模板及实现vector_~怎么回事啊~的博客-CSDN博客 SGI STL包含了一级空间配置器和二级空间配置器,其中一级空间配置器allocator采用mall ...
- 【C++】STL map 与 multimap 用法和区别
参考: https://blog.csdn.net/shuzfan/article/details/53115922 https://www.nhooo.com/cpp/cpp-map-swap-fu ...
- STL中mem_fun与mem_fun_ref的区别[转]
STL中mem_fun和mem_fun_ref的用法 分类: C++2006-11-21 09:11 5244人阅读 评论(8) 收藏 举报 怎么对容器中的所有对象都进行同一个操作?我们可能首先想到的 ...
- STL里resize和reserve的区别?
vector和deque的区别? 两个函数的功能是有区别 reserve是容器预留空间 resize是改变容器的大小,并且创建对象 reserve函数之后一个参数,即需要预留的容器的空间 为实现res ...
- STL 里 resize 和 reserve 的区别
resize 和 reserve 的区别 resize() reserve() 测试代码 resize() 改变当前容器内含有元素的数量(size()),eg: vectorv; v.resize(l ...
- STL中vector和list的区别
底层结构 vector的底层结构是动态顺序表,在内存中是一段连续的空间. list的底层结构是带头节点的双向循环链表,在内存中不是一段连续的空间. 随机访问 vector支持随机访问,可以 ...
最新文章
- 在三台Redis节点上部署哨兵集群以及主备切换、故障恢复的容灾演练中哨兵各自的日志信息、状态查看分析
- rca接口_音频线怎么区别?几种音频接口逐一介绍
- 关于TCP/IP必须知道的几个基础问题
- vim永久取消空格颜色
- CF938G Shortest Path Queries
- NeHe OpenGL第二十五课:变形
- 通过条形码扫描器攻击工控系统
- finally引起的异常丢失问题
- ffplay播放摄像头
- 如何生成SSH key
- Pytorch框架中余弦相似度(Cosine similarity)、欧氏距离(Euclidean distance)源码解析
- 杂谈技术·油猴脚本的功能实现
- 国家电网入局区块链,打造国家级能源互联网
- Virtualbox 设置共享文件夹
- neu ikobikob
- flask专题-小说网站开发二(抓取数据)
- 程序设计基础c语言版大作业,程序设计基础(C语言版)
- Windows命令集
- math_三角升幂/降幂/微积分公式填空
- 大学生bootstrap框架网页作业成品 bootstrap响应式网页制作模板 学生家乡网页bootstrap框架网站作品 html静态网页设计制作 dw静态网页成品模板素材网页