• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-04-25)  STL |   24 条评论  9 
    文章评分 0 次,平均分 0.0

    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中则是用来作用于未初始化的空间。包括复制,填充。

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/845.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享