zoukankan      html  css  js  c++  java
  • STL之空间配置器

    一、四种函数

    1、std::allocator

    内存配置

    2、std::deallocate

    内存释放

    3、std::construct

    对象构造

    4、std::destroy

    对象析构

    二、两级配置器

    原因:为了提升内存管理的效率,较少申请内存造成的内存碎片问题。

    1、第一级空间配置器

    当分配的空间大小超过128B时,会使用第一级空间配置器,使用malloc()、realloc()、free()函数进行内存空间的分配和释放

    2、第二级空间配置器

    当分配的空间大小小于128B时,使用第二季空间配置器,使用内存池技术,通过链表来管理内存

    在分配内存的时候分为三种情况,核心函数 ChunkAlloc

    函数开始,先计算内存池的剩余空间以及分配多个节点需要总共内存空间

    (1)当剩余的内存大于要分配的内存的时,直接分配,之后返回

    (2)当剩余的内存不能满足要配方的多个节点的内存需要,但是满足至少一个节点以上的内存需求,能满足几个节点的内存就分配几个节点的内存,之后返回

    (3)当剩余的内存连一个节点的内存需求都无法满足的时候,将剩余的内存挂在自由连表上,然后向系统申请,成功则返回,申请失败则在自由链表中寻找,如行不通,则调用一级空间适配器

  • 相关阅读:
    leetcode204-统计质数个数之一步步调试超时
    SpringBoot-注解一句话
    算法-总结规律
    kafka-版本变更相关
    异步线程池如何做同步业务
    es-快捷DSL检索手记
    并发学习第七篇——ThreadPoolExecutor
    kafka-consumer端的设计细节
    kafka-producer使用总结
    kafka-topic重要配置分析
  • 原文地址:https://www.cnblogs.com/socks/p/12745247.html
Copyright © 2011-2022 走看看