一、简述
标准库中allocator类定义在头文件memory中,用于帮助将内存分配和对象的构造分离开来。
allocator<string> alloc; //定义了一个名为alloc的对象
auto const p=alloc.allocate(n); //分配n个未构造的内存,即为n个空string分配了内存。
二、用法介绍
常见操作总结如下:
allocator<T> a 定义了一个名为a的allocator对象,它可以为类型T的对象分配内存
a.allocate(n) 分配一段原始的、未构造的内存,这段内存能保存n个类型为T的对象
a.deallocate(p,n) 释放T*指针p地址开始的内存,这块内存保存了n个类型为T的对象,p必须是一个先前由allocate返回的指针,且n必须是p创建时所要求的大小,且在调用该函数之前必须销毁在这片内存上创建的对象。要求还蛮多的哈,这是因为在创建过程中我们分配的是最原始的内存,所以在释放内存时也是只能严格释放这片最原始的内存。
a.construct(p,args) p必须是一个类型为T* 的指针,指向一片原始内存,arg将被传递给类型为T的构造函数,用来在p指向的原始内存上构建对象。
a.destory(p) p为T*类型的指针,用于对p指向的对象执行析构函数
三、使用默认的allocator
由于allocator将内存空间的分配和对象的构建分离,故使用allocator分为以下几步:
- allocator与类绑定,因为allocator是一个泛型类

allocator类位于C++标准库的memory头文件中,负责内存分配和对象构造的分离。本文介绍了allocator的用法,包括如何定义、分配内存、释放内存、构造和析构对象。通过与类绑定、allocate、construct、destroy和deallocate等步骤,展示了使用默认allocator的完整流程。
最低0.47元/天 解锁文章
489

被折叠的 条评论
为什么被折叠?



