STL中的配置器涉及到的几个文件

2013年4月25日 由 Creater 留言 »

STL配置器定义于memory中,包含的头文件在下面。另外该文件还定义了auto_ptr.

#include <stl_alloc.h>
#include <stl_construct.h>
#include <stl_uninitialized.h>

stl_construct.h这个头文件包含全局函数construct与destroy负责对象的构造与析构,不涉及到内存的分配与释放。
stl_alloc.h这个头文件负责空间的分配。包含两级配置器,配置器为alloc.
stl_uninitialized.h该头文件用来填充或者赋值数据。

stl_construct.h中
construct用于在已经获得的内存上构造对象,使用了定位new来生成。

template <class T1, class T2>
inline void construct(T1* p, const T2& value) {
//定位new,在给定的地址空间中,构造一个用value初始化的对象
  new (p) T1(value);
}

这里为什么要定义两个模板参数T1,T2.目的是为了兼容类型,比如int变量是可以赋值给double变量的。
destroy则调用析构函数。
当然为了提高效率,还是针对不同的模板实参进行了特化或者特殊处理。

stl_alloc.h中定义了两级空间配置器__malloc_alloc_template,__default_alloc_template.

stl_uninitialized中则是用来作用于未初始化的空间。包括复制,填充。

广告位

发表评论

你必须 登陆 方可发表评论.