如果我将一个元素插入一个空的std::list
容器中,我希望会发生内存分配以存储我的元素。现在,如果我删除此元素并添加一个新元素,分配的内存是否会在插入时释放并重新分配,或者常见的实现能够保留一个已释放(擦除)的条目池,以便可以重用它们?
答案 0 :(得分:0)
std::list<>
实现链表数据结构,因此(概念上)每次插入元素时都会分配新内存。话虽这么说,所有标准容器类都接受一个表示要使用的分配器的类型参数。使用此参数,您可以将分配器更改为仅将指针返回到预分配的内存区域的分配器。当然,如果您已经知道预先需要多少内存,则不清楚为什么要使用这种类型的数据结构。