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只能做内存分配管理,不能做地址模型适配,不知道以后会不会改变。

  • 相关阅读:
    第二章Redis管理实战
    第一章Redis入门部署及持久化介绍
    数据库命令
    第一章MySQL介绍及安装
    第十一章 MHA高可用及读写分离
    第八章 日志管理
    第九章 备份和恢复
    第十章 主从复制
    关系型数据库和非关系型数据库的对比
    MySQL面试题
  • 原文地址:https://www.cnblogs.com/rickerliang/p/2969866.html
Copyright © 2011-2022 走看看