6

我知道 C 和 C++ 中的存储类(静态、外部、自动、寄存器,C++ 还添加了可变和一些特定于编译器的类),但我不知道存储分配器是什么。我不认为它是指可在 STL 上实现的内存分配器,简单来说它是什么?

4

2 回答 2

5

它是后面的东西operator new和(不要与操作员和操作员operator delete混淆)。从空闲存储中分配内存,并释放之前分配的内存以供可能重用。当代码执行(运算符)时,编译器生成调用以获得正确的存储字节数的代码,然后调用构造函数。当代码执行(运算符)时,编译器调用析构函数 for ,然后调用以释放内存。newdeleteoperator newoperator deleteoperator newfoo *ptr = new foonewoperator newfoodelete ptrdeletefoooperator 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 回答