c++ - 存储分配器 - 它是什么?

标签 c++ memory

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

最佳答案

它是 operator newoperator 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++ - 存储分配器 - 它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115766/

相关文章:

c++ - Knuth 的乘法散列函数通过位移位

c++ - OpenMP、MPI、POSIX 线程、std::thread、boost::thread 如何关联?

c - 动态数组和结构 C 的 Valgrind 内存泄漏

memory - 内存地址通常以位为单位多长时间

c++ - 相当于 `find_if` 的二进制搜索

c++ - 共享库、对象构造函数和 fork() 行为

c - C语言中如果改变指针会释放多少内存?

C++ 对象与结构内存开销

c - 使用 strlen() 时内存泄漏

c++ - Linux 生成文件中的 undefined reference