了解STL库内存分配

时间:2014-04-25 09:13:56

标签: c++ stl

我只是急于想知道如何在C ++内存分配和清除中发生STL库。例如,考虑一个包含类对象的list容器。该类可以包含任何数据类型和存储类(例如static,const,dynamic)。容器的内存是容器内对象的总和吗?如果我使用clear函数,它会破坏容器内的所有对象(使用默认析构函数吗?),或者只是从容器中删除它们的引用?请解释一下。

1 个答案:

答案 0 :(得分:1)

除了std::array之外,stl容器的内部存储在堆中,与容器对象本身分开。

clear调用存储在容器中的任何内容的析构函数。如果存储普通指针或对象的引用,则不会销毁对象,因为指针和引用本身没有析构函数。如果存储未装箱的对象或智能指针,它们将被销毁。