🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 简介 容器通过空间配置器取得数据存储空间,空间配置器管理容器的空间 STL空间配置器产生的缘由: 在软件开发,程序设计中,我们不免因为程序需求,使用很多的小块内存(基本类型以及小内存的自定义类型)。 在程序中动态申请,释放。 这个过程过程并不是一定能够控制好的,于是乎 问题1:就出现了内存碎片问题。 问题2:一直在因为小块内存而进行内存申请,调用malloc,系统调用产生性能问题。 策略:如果申请的内存大小超过128,那么空间配置器就自动调用一级空间配置器。反之调用二级空间配置器。 一级空间配置器,STL源码中的一级空间配置器命名为`class __malloc_alloc_template` ,它很简单,就是对malloc,free,realloc等系统分配函数的一层封装。 二级空间配置器,由一个内存池和自由链表配合实现的。 # 算法概述 算法主要是由头文件`<algorithm><functional><numeric>`组成。 * `<algorithm>`是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等... * `<numeric>`体积很小,只包括在几个序列容器上进行的简单运算的模板函数. * `<functional> `定义了一些模板类,用以声明函数对象。