Skip to Main Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

34.4 分配器

STL容器(见31.4节)和string(见第36章)都是资源句柄,获取和释放内存来保存其元素。为此,它们使用分配器(allocator)。分配器的基本目的是为给定类型提供内存资源以及提供在内存不再需要时将其归还的地方。因此,基本的分配器函数有:

例如:

Simple_alloc是最简单的标准分配器。注意,转换为char*:allocate()以及从char*:allocate()转换不会调用构造函数,而deallocate()不会调用析构函数;它们处理的是内存,而非强类型的对象。

我可以构造自己的分配器来从任意内存区域分配空间:

一旦创建了Arena,就可以在分配的内存上构造对象了:

通常,我们可以使用别名简化冗长的描述。例如:

一个分配器只有当其对象真正具有状态时(类似My_alloc)才会增加容器中的内存开销,这通常是依赖空基类优化(见28.5节)实现的。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Java并发编程实战

Java并发编程实战

Brian Goetz, Tim Peierls
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt

Publisher Resources

ISBN: 9787111544395