allocator类是C++的一个模板,它提供类型化的内存分配以及对象的分配和撤销。
allocator称为分配器(空间配置器)
STL的分配器用于封装STL容器在内存管理上的底层细节。在C++中,其内存配置和释放如下:
new运算分两个阶段:(1)调用::operator new配置内存;(2)调用对象构造函数构造对象内容

delete运算分两个阶段:(1)调用对象希构函数;(2)掉员工::operator delete释放内存

为了精密分工,STL allocator将两个阶段操作区分开来:
内存配置有alloc::allocate()负责,
内存释放由alloc::deallocate()负责;
对象构造由::construct()负责,
对象析构由::destroy()负责。

同时为了提升内存管理的效率,减少申请小内存造成的内存碎片问题,SGI STL采用了两级配置器,当分配的空间大小超过128KB时,会使用第一级空间配置器;当分配的空间大小小于128KB时,将使用第二级空间配置器。第一级空间配置器直接使用malloc()、realloc()、free()函数进行内存空间的分配和释放,而第二级空间配置器采用了内存池技术,通过空闲链表来管理内存。

STL的allocaotr相关推荐

  1. 拾牙的2021年秋招总结(大概会有帮助?)

    目录 秋招面试经历 秋招面经参考 基础部分 面经 常见问题 对秋招一些经验 最后收获 后续安排 秋招面试经历 时间 公司 岗位 面试轮次 是否完成 2021年7月2日 07:00 禾赛 嵌入式软件工程 ...

  2. 牛客网C++面经 容器和算法

    原文网址 参考网址 C语言中文网 请你来说一下map和set有什么区别,分别又是怎么实现的? map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree).由于 map 和set所开放的 ...

  3. 后端怎么接收map_史上最全,C++后端开发面试题与知识点汇总

    以下汇总C++后台开发面试题与知识点,还有其他岗位的相关题库和资料,想要什么岗位的可以留言哦~ 附面试题目: 一.基础知识 1.基本语言 说一下C++和C的区别 说一下C++中static关键字的作用 ...

  4. C/C++ 八股文(二)

    C++八股文(一) 说一下static关键字的作用 参考回答: 1 全局静态变量 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量. 静态存储区,在整个程序运行期间一直存在. 初 ...

  5. 【求职】拼多多 C++方向面经

    第一篇 一面 2019/4/15 来自于牛客网 1.自我介绍,然后问项目 2.项目比较偏,讲了挺久的,不过面试官还是听完了,并且问了几个问题 3.同步异步,阻塞非阻塞 IO 区别 4.epoll/se ...

  6. C 工程师校招面试考点基础篇汇总含答案解析

    9.请你说一下你理解的c++中的smart pointer四个智能指针: 10.请回答一下数组和指针的区别 11.请你回答一下野指针是什么? 12.请你介绍一下C++中的智能指针 13.请你回答一下* ...

  7. STL源码剖析---空间配置器

    看过STL空间配置器的源码,总结一下:       1.STL空间配置器:主要分三个文件实现,stl_construct.h  这里定义了全局函数construct()和destroy(),负责对象的 ...

  8. [转]STL的内存分配器

    题记:内存管理一直是C/C++程序的红灯区.关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面 ...

  9. STL库(C++11)提供的异步执行方法的方式

    在进行并发编程的时候难免会遇到异步执行时候,现代C++标准库提供了几种异步执行的方式,本文收集整理了一下,以备将来翻阅. Thread方式 Thread 是STL提供的一种快捷创建线程的方式,极大方便 ...

最新文章

  1. display:inline-block 的使用
  2. 基于JSP实现个人博客
  3. Radware:安全信息的传送可以加速网络攻击的防御
  4. iphone导出照片到电脑_iPhone里的照片如何快速导入电脑
  5. “金融与安全大数据”专题导读
  6. MyBatis复习(十):注解开发
  7. AtCoder Grand Contest 004 C - AND Grid(思路题)
  8. Error inflating class android.webkit.WebView Caused by: ...: String resource ID #0x2040003
  9. 全国30m土壤质地数据、土壤类型数据、土壤PH、有机质、土壤理化性质数据获取/土壤侵蚀数据/土地利用数据/NPP数据/径流量数据/太阳辐射数据/降雨量数据
  10. MySql 使用关键字做字段名
  11. html输入日期算出星座,如何通过日期计算星座
  12. 外卖联盟高级API - 怎么让小程序跳转到美团小程序领红包并下单
  13. 机器学习,分类算法(饭店评价的例子)
  14. git amend如何撤销
  15. c语言写txt文件fwrite,文件操作 fwrite,该怎么处理
  16. linux内核原子操作的实现
  17. 中文检索式问答机器人模型
  18. Python Basic - read()方法
  19. 企业邮箱域名怎么填写,企业邮箱号怎么注册?
  20. Java毕业课设项目名称

热门文章

  1. android 6.0 EC20驱动移植
  2. 温故而知新的知识蒸馏 Distilling Knowledge
  3. 顶峰网谈百度关键词排名基本规则
  4. 潜入培训机构,顺出来一份价值 2.2W 的 Python 人工智能大纲
  5. 系统管理员在用友ERP U9 集团化应用中的烦恼与解决方案!
  6. 360无线wifi路由器连接到服务器,360PI无线路由器怎么联接无线+有线?
  7. Python传感器采集数据文件分析处理实验源码
  8. wxpython 事件驱动
  9. linux安装TensorFlow-GPU版本 非常详细安装必看
  10. 真正秒懂增量表、全量表和拉链表