随笔分类 -  STL 源码分析

摘要:1. 简介 STL的容器分为序列式容器和关联式容器。vector作为序列式容器的一种,其内存模型与操作方式与数组类似,都是以一段连续的内存空间存储数据单元,区别在于数组的内存空间大小固定,不可变动,而vector可实现动态的内存迁移。当vector存储满后,会自动重新申请更大的内存空间作为新的存储容 阅读全文
posted @ 2022-05-06 22:56 流翎 阅读(587) 评论(0) 推荐(0) 编辑
摘要:1. 简介 作为STL六大组件之一的迭代器(iterator),它提供一种方法,使之能够依次访问容器内所含的各个元素,而又不需暴露容器的内部表述方式。它扮演着容器与算法之间的胶合剂,也是所谓的“泛型指针”。从实现的角度看,迭代器是一种将operator*,operator->,operator++, 阅读全文
posted @ 2022-04-23 11:03 流翎 阅读(345) 评论(0) 推荐(0) 编辑
摘要:1. 简介 stl 在<bits/stl_uninitialized.h>文件中提供了一系列的全局内存处理函数,用于容器的初始化工作。此篇章主要分析该文件提供的部分函数。 2. __uninitialized_default_n_a // 调用空间分配器_Allocator提供的construct函 阅读全文
posted @ 2022-04-16 21:38 流翎 阅读(327) 评论(0) 推荐(0) 编辑
摘要:1. 摘要 bitmap_allocator是STL空间分配器的其中一种,它采用内存池策略,最多存储64条空闲链表(freelist,实际是一块空间连续的内存区,后面也称为超级块),每条空闲链表存储的内存块(block)个数呈指数递增,内存块大小一致,内存池的阈值总是维持在64,任何时刻内存池的链表 阅读全文
posted @ 2022-04-09 15:00 流翎 阅读(373) 评论(0) 推荐(0) 编辑
摘要:1. 摘要 pool_allocator是一种基于单锁内存池的空间分配器,其内部采用内存池思想,通过构建16个空闲内存块队列,来进行内存的申请和回收处理。每个空闲队列管理的内存块大小固定,且均为8的倍数,范围从8到128字节,按8的倍数递增。该空间分配器最小分配单位为8字节,低于128字节(含128 阅读全文
posted @ 2022-03-30 23:21 流翎 阅读(407) 评论(0) 推荐(0) 编辑
摘要:1. 简介 mt allocator 是一种以2的幂次方字节大小为分配单位的空间配置器,支持多线程和单线程。该配置器灵活可调,性能高。 分配器有三个通用组件:一个描述内存池特性的数据,一个包含该池的策略类,该池将实例化类型链接到公共或单个池,以及一个从策略类继承的类,该类是实际的分配器。 描述内存池 阅读全文
posted @ 2022-03-28 23:08 流翎 阅读(229) 评论(0) 推荐(0) 编辑
摘要:1. 摘要 STL的空间分配器(allocator)定义于命名空间std内,主要为STL容器提供内存的分配和释放、对象的构造和析构的统一管理。空间分配器的实现细节,对于容器来说完全透明,容器不需关注内存分配和回收的策略细节如何。 STL allocator需实现如下4个标准接口 pointer al 阅读全文
posted @ 2022-03-28 23:07 流翎 阅读(427) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示