一、SGI 标准的空间配置器,std::allocator SGI也定义了一个符合部分标准,名为allocator的配置器,但是它自己不使用,也不建议我们使用,主要原因是效率不佳。 它只是把C++的操作符::operator new和::operator delete做了一层简单的封装而已。 二、S ...
分类:
其他好文 时间:
2016-06-04 19:26:30
阅读次数:
312
STL简介 STL(Standard Template Library,标准模板库),从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 谈及组件,那么我们就首先来简单谈下STL六大组件,其相关的设计模式使用,以及各组 ...
分类:
其他好文 时间:
2016-06-03 21:35:18
阅读次数:
302
我是照着侯捷老师的《STL源码剖析》做的cghSTL,现在才看到第三章,忽然觉得这本书的编排非常适合自学。
第一章讲解空间配置器,这是STL最基础的部件,没什么好说的。
第二章讲解迭代器,老师举了单向链表的例子,这非常有考究,单向链表不需要连续的存储空间,意味着使用单向链表实现的容器不需要考虑空间溢出等问题,我们可以把注意力集中在容器的迭代器上。
第三章讲解序列式容器,一来说怎么实现vect...
分类:
其他好文 时间:
2016-05-18 19:17:35
阅读次数:
209
SGISTL默认使用二级空间配置器,当需要配置的区块大于128 bytes时SGI STL调用一级空间配置器,一级空间配置器的allocate函数直接使用malloc分配内存,deallocate函数直接使用free释放内存。当需要配置的区块小于128 bytes时SGI STL调用二级空间配置器。
相比于一级空间配置器简单粗暴的内存使用方法,二级空间配置器对内存的使用显得精细...
分类:
其他好文 时间:
2016-05-13 01:17:57
阅读次数:
194
我们在编写程序过程中,需要内存时,我们第一反应就是malloc,但是这样容易产生内————存碎片,比如先申请50字节的空间,紧接着有申请了13字节空间,最后有申请了100字节空间,假设刚好这部分空间是连续的,那么当中间13字节空间释放后,之后一只在申请的空间都大于13字节,这是,这块空间就会形成内存碎片无法被利用。在STL中提到了空间适配器,它主要分为两级:一级空间适配置器,二级空间配置器。一级空间...
分类:
其他好文 时间:
2016-05-12 21:09:14
阅读次数:
239
侯捷老师的书中介绍了空间配置器基本的接口(p43~44)。以下是一个简单的空间配置器实现:
cghAlloc.h:
#ifndef _CGH_ALLOC
#define _CGH_ALLOC
#include
#include
#include
#include
#include
namespace CGH
{
template
inline T* _allocate(p...
分类:
其他好文 时间:
2016-05-06 12:33:13
阅读次数:
144
上篇文章主要对于对象的构造含和析构进行了主要说明,这篇文章将对对象构造前的内存配置和对象析构后的空间释放进行深入探索。
好的,话不多说马上进入是正文:
对对象构造前的内存配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下:
向system heap要求空间。
考虑多线程的状态
考虑内存不足的应变措施
考虑过多的“小型区块”可能造成的内存碎片问题
C++的内存配置...
分类:
其他好文 时间:
2016-04-29 18:00:17
阅读次数:
143
上篇文章主要对于对象的构造含和析构进行了主要说明,这篇文章将对对象构造前的内存配置和对象析构后的空间释放进行深入探索。
好的,话不多说马上进入是正文:
对对象构造前的内存配置和对象析构后的空间释放,由负责,SGI对此的设计哲学如下:
向system heap要求空间。
考虑多线程的状态
考虑内存不足的应变措施
考虑过多的“小型区块”可能造成的内存碎片问题
C++的内存配置...
分类:
其他好文 时间:
2016-04-26 20:24:25
阅读次数:
136