使用_M_allocate了解std :: vector()分配

时间:2014-10-07 12:49:55

标签: c++ gcc memory vector

我刚接触编程,想要了解Linux下的gcc,当我使用std::vector()保留空间时。 我期望类似于new语句,但我在_M_allocate中找到的是vector.tcc。 环顾四周后,我发现这些_M_something语句无处不在,但没有正确的解释。 有人可以帮助我吗? 这些符号的解析方式和位置在哪里?

1 个答案:

答案 0 :(得分:1)

_M_something表示内部成员函数。它有一个reserved indentifier(下划线+大写字母)。

引用GNU Coding Style

  Member data and function names: _M_.*
  Examples:  _M_num_elements  _M_initialize ()

std::vector不使用原始new/delete,而是std::allocator来管理/构建内存块。