我知道 C 和 C++ 中的存储类(静态、外部、自动、寄存器,C++ 还添加了可变和一些特定于编译器的类),但我不知道存储分配器是什么。我不认为它是指可在 STL 上实现的内存分配器,简单来说它是什么?
问问题
449 次
2 回答
5
它是后面的东西operator new
和(不要与操作员和操作员operator delete
混淆)。从空闲存储中分配内存,并释放之前分配的内存以供可能重用。当代码执行(运算符)时,编译器生成调用以获得正确的存储字节数的代码,然后调用构造函数。当代码执行(运算符)时,编译器调用析构函数 for ,然后调用以释放内存。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 标准中,它也用于指代标准分配器。
于 2013-02-27T15:28:31.967 回答
5
在 C++ 标准中,该术语用于指代 STL 样式容器使用的分配器类 - 或者std::allocator
满足 C++11 17.6.3.5 给出的要求的用户定义的自定义分配器。
但是,它不是一个正式定义的术语,也曾出现一次,指的是自由存储的实现——即由new
.
[注意:我指的是当前的(2011)语言规范。如评论中所述,该规范的历史版本显然仅使用该术语(非正式地)来指代免费商店]
于 2013-02-27T15:32:45.707 回答