我只是急于想知道如何在C ++内存分配和清除中发生STL库。例如,考虑一个包含类对象的list
容器。该类可以包含任何数据类型和存储类(例如static,const,dynamic)。容器的内存是容器内对象的总和吗?如果我使用clear
函数,它会破坏容器内的所有对象(使用默认析构函数吗?),或者只是从容器中删除它们的引用?请解释一下。
答案 0 :(得分:1)
除了std::array
之外,stl容器的内部存储在堆中,与容器对象本身分开。
clear
调用存储在容器中的任何内容的析构函数。如果存储普通指针或对象的引用,则不会销毁对象,因为指针和引用本身没有析构函数。如果存储未装箱的对象或智能指针,它们将被销毁。