存储分配器——它是什么?
Storage allocator - what is it?
我知道C和c++中的存储类(静态,extern, auto, register, c++还添加了可变的和一些特定于编译器的),但我无法弄清楚存储分配器是什么。我不认为它是指在STL上可实现的内存分配器,简单来说是什么?
这是operator new
和operator delete
背后的任何东西(不要与new
操作符和delete
操作符混淆)。operator new
从自由存储区分配内存,operator delete
释放之前由operator new
分配的内存,以便可能的重用。当代码执行foo *ptr = new foo
(new
运算符)时,编译器生成调用operator new
以获得正确的存储字节数的代码,然后调用foo
的构造函数。当代码执行delete ptr
(delete
运算符)时,编译器调用foo
的析构函数,然后调用operator delete
释放内存。
注意,这就是c++ 03标准中使用该术语的方式。在c++ 11标准中,也是用来指代标准分配器。
在c++标准中,该术语用于指stl风格容器使用的分配器类——std::allocator
或用户定义的满足c++ 11 17.6.3.5要求的自定义分配器。
然而,它不是一个正式定义的术语,并且也出现过一次,指的是自由存储的实现-即new
分配的动态存储。
[注:我指的是当前(2011)的语言规范。正如在注释中所指出的,规范的历史版本显然只是(非正式地)使用这个术语来指代自由存储]
相关文章:
- 使用大括号实例化 - 它是什么,为什么在这里使用它?
- 当我打印字符串时,我不知道它是什么输出
- 它是什么SOMTEMPLATE_VR_API
- wxDataViewModel:它是什么以及如何使用它
- typedef void (*MyCallback) : 它是什么以及如何使用它
- C ++技巧与*和它是什么意思
- 它是什么?C++宏函数?如何替换这个宏?我能举个例子吗
- 由向量中的负索引引起的杂散 '342' 或它是什么
- 我在运行时遇到以下错误.它是什么意思?我该如何调试它
- 视觉错误类 c++ 类。 不知道它是什么
- 为什么地址运算符是C++类的默认成员,它是什么
- 我不认为这是选角,但它是什么?
- 函数声明中带有[]运算符的指针——它是什么意思
- 警告C4309 -它是什么意思,在这种情况下可以忽略它
- CL错误与MS Visual Studio 2010,它是什么
- in(std::cin):它是什么意思
- 我没有找到solus linux,它是什么,我怎么得到它
- 存储分配器——它是什么?
- 分段故障(堆芯倾倒)?它是什么,为什么会引起???(c++中的双循环链表程序)
- boost::heap::arity,它是什么