首页 > 代码库 > allocator 类
allocator 类
allcator是一个模板类
定义在memory头文件中,将内存分配与对象构造分开,分配的内存是原始的、未构造的
一、how to use
因其实一个类,则使用allcator时需要首先声明一个类对象
allocator<type> alloc; //type指明allocator可以分配的对象类型,alloc为对象
用对象分配内存
auto p=alloc.allocate(n); // 分配n个未初始化的 type
一些用法
alloc.deallocate(p,n) // 释放从type*指针p中地址开始的内存,这块地址保存了n个类型为type的对象// p必须是一个先前由allocate返回的指针// 在调用此函数之前,用户必须对每个在这块内存中创建的对象调用destroyalloc.construct(p,args)//在p指向的内存中构造一个值为args的对象alloc.destroy(p)// 对p指向的对象执行析构函数
通俗的来讲,allocator是一个向系统申请一段内存空间的工具,申请的内存空间就相当于一片空地
为了利用这片空地我们需要construct一些东西,construct后,如果不要这些东西了,就要destroy掉这些对象,之后如果不要这块地了,就上交给国家deallocate
二、拷贝与填充未初始化内存
用allocator申请内存空间,不一定能够用完,对于剩下的内存空间有如下的使用方法
uninitialized_copy(b,e,b2);// 从迭代器b和e指出的输入范围中拷贝到b2指定的位置,返回指向最后一个元素之后的指针uninitialized_copy_n(b,n,b2);// 从迭代器b指出的位置开始拷贝n个元素到b2指定位置,返回指向最后一个元素之后的指针
uninitialized_fill(b,e,t); // 在迭代器b到e指定的范围中创建对象值均为t的拷贝 uninitialized_fill(b,n,t); // 类似
allocator 类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。