当前位置: 首页 > ai >正文

12.2.2 allocator类

allocator类将分配内存空间、调用构造函数、调用析构函数、释放内存空间这4部分操作分开,全部交给程序员来执行,不像new和delete

#include <iostream>
#include <string>int main()
{const int n = 10;std::allocator<std::string> alloc;          // 定义一个用于分配string的allocator的对象std::string* const p = alloc.allocate(n);   // 分配n个未初始化的string的内存,没有调用string的构造函数std::string* q = p;while (q != p + n) {                        // p + n相当于p[n],即数组最后一个元素的下一个位置alloc.construct(q, 10, 'a');            // 通过q为每个string调用构造函数,构造函数参数由alloc.construct传递std::cout << "construct: " << * q << std::endl;q++;                                    // q最终会指向最后一个string的下一个位置}while (q != p) {q--;std::cout << "destory: " << *q << std::endl;alloc.destroy(q);                       // 对q指向的string进行析构}alloc.deallocate(p, n);                     // 释放内存空间,p必须是先前调用allocate时返回的指针,n必须是创建时allocate填入的数量
}
http://www.xdnf.cn/news/5725.html

相关文章:

  • CMake 命令行参数全解析(2025年更新版)
  • Clang实现C++文件分析,含Python实战
  • 使用webservice生成节假日/双休日/工作日信息
  • 蚁群算法赋能生鲜配送:MATLAB 实现多约束路径优化
  • PowerBI基础
  • bunsenlabs系统详解
  • java 中 DTO 和 VO 的核心区别
  • 基于SpringBoot的校园周边美食探索及分享平台【附源码+数据库+文档下载】
  • JSON 实体属性映射的最佳实践
  • 人脸识别的应用场景变化
  • 牛客周赛 Round 92
  • vue2关闭eslint
  • 如何避免 JavaScript 中常见的闭包陷阱?
  • 如何指定conda环境打包成docker镜像
  • fastp数据质控
  • 远程命令执行RCE概述
  • C++编程练习,认识面向对象权限,如何进行封装
  • 北大夫妇携花皙蔻向西藏昂仁县第二小学捐赠爱心图书室
  • C++ - 堆栈RAII(资源获取就是初始化)详解
  • 星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
  • ESP32-S3 with ESP-IDF v5.4.1 LVGL 9.2.0 Custom memory allocator
  • AWS EC2源代码安装valkey命令行客户端
  • Linux电源管理(五),发热管理(thermal),温度控制
  • IEEE出版|2025年算法、软件与网络安全国际学术会议(ASNS2025)
  • MySQL 学习(七)undo log、redo log、bin log 的作用以及持久化机制
  • 输出重定向
  • 双向链表专题
  • 51 单片机头文件 reg51.h 和 reg52.h 详解
  • element plus el-table多选框跨页多选保留
  • 2-巯基烟酰甘氨酸 晒后美白新配方,解决皮肤暗沉