stl allocator主要分配及应用联想
来源:互联网 发布:手机wifi网络异常 编辑:程序博客网 时间:2024/06/01 08:15
stl allocator一直比较神秘,最近几天帮助同事在symbian调试类stl的类库有所触动。stl allocator有几个地方需要注意就可以了:
1.allocate主要功能是分配内存,而且一般来说是无类型的内存;
2.deallocate的主要功能是释放内存,与allocate配对使用。
3._Construct是针对于具体的元素或数据项的操作,主要是类的构造,具体涉及到的技术是new placement;
4._Destroy或_DESTRUCTOR与Construct相对的操作,主要用于析构;
注意:不论是对内置的类型(比如:int,char)还是对自定义的类型(比如class或struct)都存在构造函数和析构函数,即函数~int是合法并且可以编译run的。
现在问题比较明确了:
一、stl allocator使用allocate和deallocate来做大块内存的申请和释放,然后使用_Construct和_Destroy或_DESTRUCTOR在这块内存上做数据项的构造和析构,两者针对的对象完全不同。
二、allocate和deallocate是对new和delete或malloc和free的接口封装,甚至,可以使用栈上的内存。
三、内存池概念的封装。stl allocator本质上对内存申请和释放做了封装,这可以很方便引入了内存池的技术,而且是变通的内存池。
引申stl allocator的用法,我们甚至可以在一些需要频繁申请和释放内存的地方引入_Construct和_Destroy的概念;
比如:
在一个频繁使用的函数里:
class A;
void func()
{
A* pA = new A(value);
...
delete pA;
}
可以替换为:
class A;
void func()
{
static char cBuffer[sizeof(A) ];
_Construct(cBuffer,value );
...
_Destroy(pA);
}
这样可以避免内存碎片,减少系统回收内存的工作压力;而且可以隐藏部门类库的实现方法。
以上只是灵感突发,至于实际上的应用价值需要实践检验。
- stl allocator主要分配及应用联想
- STL的内存分配(各种allocator)
- STL Allocator
- STL-allocator
- stl allocator
- STL Allocator
- STL Allocator
- STL Allocator
- STL Allocator
- 【C++ STL应用与实现】95: 如何使用Allocator
- STL解读-rebind的目的就是再定义一个struct (allocator), 这个allocator能分配 _Other类型的元素。
- g++ 中的stl allocator
- stl allocator实现代码
- 关于STL Allocator
- 深入理解 STL allocator
- C++ STL allocator
- STL的默认allocator
- 关于STL allocator
- Java内存分配(三)
- 高效编写JAVA代码的30条建议
- C++ COM实现之三 实现类厂
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题
- “大数据”的价值——以Hadoop为核心
- stl allocator主要分配及应用联想
- 开发安全的web应用程序
- 解决IE6中javascript在window.location.href不工作的问题
- 海量数据处理---题目
- textarea滚动条设置
- 《你不常用的c#之二》:略谈GCHandle
- 2年前写的js可输入可选的下拉框
- 海量数据处理[3]
- 【Killua笔试面试题整理】小狗试药