zoukankan      html  css  js  c++  java
  • C++ allocator简记

        最近听同事说,某公司面试问到了C++ allocator相关的问题。

        allocator模版本质是stl容器对内存管理的一组需求,泛型编程里称之为concept。自己制作allocator时,只要满足这些需求就没有问题了。值得注意的是,allocator内一个很有趣的结构,不得不提,这就是rebind,它的目的就是:通过一个已具体化的allocator class得到另一个具体化的allocator class,这是对class的编程,可以认为是简单的模版元编程。例如allocator<int>::rebind<long>::other就是一个allocator<long>。

        rebind主要服务于stl链式容器,例如list。当list模版具体化为class时,可以指定list的元素类型和元素的内存分配策略(例如list<int, myallocator<int>>),但list节点的内存分配策略无法指定,事实上,list节点的内存分配策略应与元素的内存分配策略相同,这时就需要rebind生成list节点的allocator。

        最后吐槽一下,现时的allocator只能做内存分配管理,不能做地址模型适配,不知道以后会不会改变。

  • 相关阅读:
    ES6标准入门之正则表达式的拓展
    将博客搬至CSDN
    CUDA杂谈
    QT源码解析笔记
    图解DTS和PTS
    图解 I帧,B帧以及P帧
    这半年的一些事情
    C++的一些编程规范
    pjsip与QT进行适配
    编程规范检测脚本
  • 原文地址:https://www.cnblogs.com/rickerliang/p/2969866.html
Copyright © 2011-2022 走看看