神秘的 Allocator
先看看 std::vector 的声明
template < class Type, class Allocator = allocator<Type> > class vector
这个 allocator 一般我们很少用到,这个 allocatior 完成了分配内存的工作,对于小内存,它使用了线程池来优化效率。比较具体的介绍可以参考 http://www.stlchina.org/twiki/bin/view.pl/Main/STLWhatAllocator 。
需要注意的是,如果你的 Type 是一个类,那么这个 allocatior 实际上只分配了足够的内存,而并没有调用这个类的构造函数,如果你的类需要调用构造函数,可以使用 new 的比较少见的一种用法(placement new):
std::allocator<Type> _alloc;
Type *p=_alloc.allocator(1); // 分配一个空间 1 是要构造的 Type 的数量
p=new (p) Type( ); // 在这个空间上调用构造函数,注意第一个 () 不能少
在指定的空间创建你的类(调用构造函数)。最后释放空间
_alloc.deallocator( p, 1 ); // 释放空间
如果想搞明白 new 的这些奇怪的用法,可以参考 http://www.javajsp.net/JavaLibrary/C/200701/JavaLibrary_6963.html
神秘的 Allocator相关推荐
- 神秘的数组初始化_I / O神秘化
神秘的数组初始化 由于对高度可扩展的服务器设计的所有炒作以及对Node.js的狂热,我一直想重点研究IO设计模式,直到现在为止都没有足够的时间进行投资. 现在已经做了一些研究,我认为最好记下我遇到的东 ...
- 深入理解Allocator
Allocator是C++语言标准库中最神秘的部分之一.它们很少被显式使用,标准也没有明确出它们应该在什么时候被使用.今天的allocator与最初的STL建议非常不同,在此过程中还存在着另外两个设计 ...
- c++ Allocator
Allocator是C++语言标准库中最神秘的部分之一.它们很少被显式使用,标准也没有明确出它们应该在什么时候被使用.今天的allocator与最初的STL建议非常不同,在此过程中还存在着另外两个设计 ...
- 仅需6步,教你轻易撕掉app开发框架的神秘面纱(1):确定框架方案
遇到的问题 做游戏的时候用的是cocos2dx+lua,游戏开发自有它的一套框架机制.而现在公司主要项目要做android和iOS应用.本文主要介绍如何搭建简单易用的App框架. 如何解决 对 ...
- 了解黑客的关键工具---揭开Shellcode的神秘面纱
2019独角兽企业重金招聘Python工程师标准>>> ref: http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...
- SQL性能优化没有那么神秘
经常听说SQL Server最难的部分是性能优化,不禁让人感到优化这个工作很神秘,这种事情只有高手才能做.很早的时候我在网上看到一位高手写的博客,介绍了SQL优化的问题,从这些内容来看,优化并不都是一 ...
- 大数据背后的神秘定理:贝叶斯公式
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 引子 昨天下午趁着出去调研在湖滨银泰的星巴克做网易机器学习实习生岗 ...
- [Bzoj4408]神秘数(主席树)
Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数. 例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = ...
- 神秘又强大的@SpringBootApplication注解
作者:vivo 互联网服务器团队-Peng peng 一.前言 大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注 ...
最新文章
- MariaDB 基金会 CEO 宣布将于 10 月 1 日卸任
- 2018.2.27 9周5次课
- 虚拟化厂商VMware、微软和思杰的vGPU支持概述
- 《游戏引擎架构》笔记十四
- 统计学习:方差分析(ANOVA2)
- 打开高效文本编辑之门_Linux Sed插入追加转换退出等命令应用
- java hashmap 添加_JAVA—HashMap
- mysql教程丿it教程网_MySQL整体
- XenApp_XenDesktop_7.6实战篇之二十一:Linux Virtual Desktop 1.0(下篇)
- java对redis的基本操作(初识)
- chain rule 到 Markov chain
- 史上最详细的sqlmap使用教程
- 高等数学习题全解指南下册同济第七版课后习题答案
- 高斯克吕格投影中有关带号与经度的关系
- 银行卡验证(四要素)和银行联行号查询
- 5.5mysql_MySQL5.5-MySQL5.5下载 v5.5.60.1官方版 64位/32位-第五资源
- The nodejs-legacy package simply installs a symbolic link so that it can be executed using the node
- Python:打印九九乘法口诀表
- 学游戏原画都需要掌握哪些软件
- Android 实现推送功能