C++ STL(第三篇:空间配置器)

本文介绍了C++ STL中的空间配置器,包括内存分配与释放的分工,第一级和第二级配置器的工作原理。第二级配置器通过内存池和自由链表管理小块内存,避免碎片并提高效率。文章详细阐述了配置器在内存不足时的处理策略及内存回收过程。
摘要由CSDN通过智能技术生成

1、概述

以STL运用的角度而言,空间配置器是最不需要介绍的,它总是藏在一切组件的背后,默默工作。整个STL的操作对象都存放在容器之中(vertor、list),而容器一定需要配置空间以放置资料,这就是空间配置器的作用

虽然STL提供了让我们自定义空间配置器的接口,但是不建议自己定义,因为标准提供的空间配置器是安全的,且效率也不错的。所以我们使用时,一般都会使用默认的配置器。如下:

template <class T, class Alloc = allocator<T> >
class vector {};

vect<int> vec;	//这里只传入int类型,使用默认的空间配置器

下面的空间配置器是按照SGI 版本的STL进行讲解的,但是STL的原理是通的。

2、空间配置器的内存分配和释放

通过前面整理C++ new和delete的详解,我们知道C++内存配置操作和释放操作是这样的:

class Foo {...};
Foo* pf = new Foo;	//配置内存,然后构造对象
delete pf;			//将对象析构,然后释放内存

这其中的 new 内含两个阶段操作:1、调用operator new 配置内存。2、调用构造函数,构造对象内容
delete也内含两个阶段操作:1、调用析构函数。2、调用opera

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值