前言 在STL中,容器的定义中都带一个模板参数,如vector 其中第二个参数就是该容器使用的空间配置器,其中缺省使用STL已经实现的空间配置器(alloc), 该配置器使用malloc/free等为vector分配内存。 缺省的空间配置器 alloc定义了两级的空间配置器,第一级是对malloc/ ...
分类:
其他好文 时间:
2016-10-22 17:11:50
阅读次数:
213
Alloc.h//Alloc.h负责内存空间的配置与释放
//Construct.h负责对象内容的构造与析构
//这两个头文件在memory文件中包含
#pragmaonce
typedefvoid(*HANDLER_FUNC)();
//一级空间配置器
template<intinst>
class__MallocAllocTemplate
{
public:
staticvoid*Allocate(si..
分类:
其他好文 时间:
2016-08-12 06:48:44
阅读次数:
234
空间配置器:隐藏在容器的背后,负责空间的配置与管理一级空间配置器(malloc_alloc)和二级空间配置器(default_alloc)SGI标准空间配置器std::allocator||未考虑效率SGI特殊空间配置器std::alloc||allocate()construct()destroy()deallocate()二级空间配置器freelists、memorypoo..
分类:
其他好文 时间:
2016-08-11 22:57:11
阅读次数:
202
__malloc_alloc_template分配器:该分配器是对malloc、realloc以及free的封装:当调用malloc和realloc申请不到内存空间的时候,会改调用oom_malloc()和oom_realloc(),这两个函数会反复调用用户传递过来的outofmemoryhandler处理函数,直到能用malloc或者realloc申请到内存为止..
分类:
其他好文 时间:
2016-07-29 19:26:58
阅读次数:
125
库:没错误,比框架小,用来解决小问题。框架:解决开发中某个功能很全。STL:标准规范,代码不一样,风格,框架有差异包括:算法容器STL包括:容器:容纳数据的结构迭代器:扮演容器和算法的胶合剂空间配置器:内存空间(动态分配)的分配与管理配接器:一种修饰容器的东西:st..
分类:
其他好文 时间:
2016-07-25 16:29:54
阅读次数:
142
空间适配器,所谓空间适配器,就是用来管理内存的一个器具。对于STL来说,空间适配器是它可以正常工作的基础,也为它可以高效工作提供了动力。对于使用STL来说,它是不和用户直接打交道的,而是隐藏在一切STL组建之后,默默为各种内存申请提供支持的。对于c++用户来说,new和delete很熟悉,这两个函数 ...
分类:
其他好文 时间:
2016-07-22 19:00:14
阅读次数:
222
网上有很多对于STL空间配置器源码的剖析,之所以这么多人去剖析空间配置器,我觉得是真的设计的太好,而且剖析空间配置器的架构的设计对于C++学者来说是一个不错的提高能力的项目,所以加入到这个解剖大军中来。
参照了侯捷的《STL源码剖析》,原本直接看源码不懂得东西,突然间豁然开朗。再次写下自己对于STL空间配置器的一点点理解。
要了解空间配置器,有一张图是必看的:
...
分类:
其他好文 时间:
2016-07-15 00:46:45
阅读次数:
238
这里非常的绕口 需要仔细的来看看: destory(): 显示调用一个对象的析构函数 相当于释放一个对象需要释放的一些动态内存 为下次真正释放对象做准备 deallocate():真正的释放一个内存块。这是一个上层封装也就是delete函数的上层封装 在STL的空间配置器中 有可能会调用delete ...
分类:
编程语言 时间:
2016-07-09 16:31:10
阅读次数:
257
摘要 在上一篇博客《STL空间配置器那点事》简单介绍了空间配置器的基本实现 两级空间配置器处理,一级相关细节问题,同时简单描述了STL各组件之间的关系以及设计到的设计模式等。 在最后,又关于STL空间配置的效率以及空间释放时机做了简单的探讨。 线程安全问题概述 为什么会有线程安全问题? 认真学过操作 ...
分类:
编程语言 时间:
2016-06-12 01:43:50
阅读次数:
202
一、SGI 标准的空间配置器,std::allocator SGI也定义了一个符合部分标准,名为allocator的配置器,但是它自己不使用,也不建议我们使用,主要原因是效率不佳。 它只是把C++的操作符::operator new和::operator delete做了一层简单的封装而已。 二、S ...
分类:
其他好文 时间:
2016-06-06 09:04:09
阅读次数:
238