码迷,mamicode.com
首页 >  
搜索关键字:空间配置器    ( 92个结果
SGI STL第二级空间配置器空间释放函数deallocate
union obj{ obj * free_list_link ; char client_data[1] ; }; __default_alloc_template拥有配置器标准接口函数deallocate()。该函数首先判断区块大小,大于128bytes就调用第一级配置器,小于128bytes就找出相应的free list将区块回收: //p is not 0/null static...
分类:其他好文   时间:2014-12-11 20:58:11    阅读次数:169
STL源码剖析 --- 空间配置器 std::alloc
STL是建立在泛化之上的。数组泛化为容器,参数化了所包含的对象的类型。函数泛化为算法,参数化了所用的迭代器的类型。指针泛化为迭代器,参数化了所指向的对象的类型。STL中的六大组件:容器、算法、迭代器、配置器、适配器、仿函数。 这六大组件中在容器中分为序列式容器和关联容器两类,正好作为STL源码剖析这本书的内容。迭代器是容器和算法之间的胶合剂,从实现的角度来看,迭代器是一种将operator*、o...
分类:其他好文   时间:2014-12-08 00:55:58    阅读次数:213
如何在STL的map中使用结构体作为键值
这里首先给出容器map的原型:template , class Alloc = alloc>class map{ ...} 可以看到模板参数一共有四个,第一个就是Key,即键;第二个就是值;第四个就是空间配置器,默认使用alloc(随STL版本不同而不同)。那么第三个是啥? 我们知道,map...
分类:其他好文   时间:2014-11-15 00:02:29    阅读次数:267
STL
在C++标准中,STL被组织为下面的13个头文件:、、、、、、、、、、、、、、、和。 STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。 容器 容器部...
分类:其他好文   时间:2014-11-09 23:39:28    阅读次数:324
STL源码剖析:空间配置器
看完自己重写了一下,不知道的又看了一遍。 Mempool.h #ifndef MEMPOOL_H_ #define MEMPOOL_H_ #include #include #include namespace flysnow { enum {STEP_ = 8}; enum {MAX_BYTES_ = 128}; enum {FREELIST_NUM_ = MAX...
分类:其他好文   时间:2014-10-17 00:35:13    阅读次数:336
_Obj* __STL_VOLATILE* __my_free_list
今天在读《STL源码剖析》空间配置器第二级时看到了这句,有点不解,于是查阅后知:obj后面是个指针 STL_VOLATILE也应该是个类型定义的吧,程序中应该有define来对它定义。所以就是指针的指针。。指针,也就是地址,所以是__my_free_list是一个地址,*__my_free_list...
分类:其他好文   时间:2014-09-03 00:13:05    阅读次数:420
重温《STL源码剖析》笔记 第二章
第二章:空间配置器 allocator SGI特殊的空间配置器,std::alloc SGI是以malloc()和free()完成内存的配置与释放。 SGI设计了双层级配置器: 第一级配置器直接使用malloc()和free(); _malloc_alloc_template ...
分类:其他好文   时间:2014-09-02 22:40:25    阅读次数:237
STL源码分析--空间配置器 第一级配置器
一、SGI STL配置器简介 SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写: [cpp] view plaincopyprint? vectorint,std::alloc> iv;   他的名字是alloc,而且不接受任何参数。标准配置器的名字是allocator,而且可以接受参数。 SGI S...
分类:其他好文   时间:2014-08-26 11:49:26    阅读次数:243
STL源码分析--第二级空间配置器
本文讲解SGI STL空间配置器的第二级配置器。 相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片。不仅仅是碎片的问题,配置时的额外负担也是一个大问题。因为区块越小,额外负担所占的比例就越大。 额外负担是指动态分配内存块的时候,位于其头部的额外信息,包括记录内存块大小的信息以及内存保护区(判断是否越界)。要想了解详细信息,请参考MSVC或者其他malloc实现。...
分类:其他好文   时间:2014-08-26 11:49:16    阅读次数:201
C++中 destory() 和deallocate()以及delete函数的相关性和区别性
这里非常的绕口 需要仔细的来看看: destory(): 显示调用一个对象的析构函数 相当于释放一个对象需要释放的一些动态内存 为下次真正释放对象做准备 deallocate():真正的释放一个内存块。这是一个上层封装也就是delete函数的上层封装 在STL的空间配置器中 有可能会调用dele.....
分类:编程语言   时间:2014-08-23 16:38:51    阅读次数:224
92条   上一页 1 ... 7 8 9 10 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!