首页 > C++学习篇(6)-空间配置器
头像
文刀刘+1
编辑于 2021-01-07 10:58
+ 关注

C++学习篇(6)-空间配置器

本篇内容主要介绍STL六大组件之一的空间配置器(alloctor),其分为一级空间配置器和二级空间配置器,二级空间配置器主要是为了解决小内存分配时产生的碎片化问题,实现思想是内存池。原文链接:https://mp.weixin.qq.com/s/eTULOCRR7AzhANAvYbOKbw

引言

new分配内存主要含有两阶段操作

1.调用operator new分配内存;

2.调用类的构造函数构造对象内容;

delete释放内存也含有两阶段操作

1.调用析构函数将对象析构;

2.调用operator delete释放内存。

例:class Foo{...};

//配置内存,然后构造对象

Foo pf = new Foo;

//将对象析构,然后释放内存

dedlete pf;

为了精密分工,STL allocator决定将两阶段操作区分开来。

对于具体的实现细节可参考《STL源码剖析》,这里面主要给大家一些概念,相当于总览。接下来重点说一下STL空间配置器中内存分配,这部分在面试中可以作为自己的亮点,比说说超过128byte分配,小于128byte时二级配置器的分配方式,为什么要分成两种配置方式(因为分配小内存会存在内存碎片的问题)。


STL内存分配示意图


内存分配流程图


第一级空间配置器

代码

为什么使用malloc而不是new分配内存?






全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐