何时/如何在C++中的容器数据类型(字符串,向量等)释放其动态分配的内存?

Jef*_*hen 1 c++

由于容器数据类型具有动态大小,我假设它们在堆上分配内存.但他们何时/如何释放这个分配的内存?

Jos*_*phH 5

当它们超出范围时(如果容器是在堆栈中创建的),或者在容器上显式调用delete(如果是基于堆的容器),它们将被释放.发生这种情况时,将自动调用容器的析构函数,然后释放为容器(包含数据)分配的堆内存.

简单地删除容器中的元素不一定会立即释放内存,因为STL容器通常使用缓存来加快速度.请记住,新/删除操作相对昂贵.