也许可以补充一下 Steve 给出的好答案:确实,内部分配是由分配器来完成的,它们有两个独立的目的:分配和释放内存,以及构建和销毁对象。对象总是在插入时被复制或移动构造,并在擦除时被销毁,但内部会有所变化。基于节点的容器通常会分配和构造一个完整的内部节点,其中包含实际对象和记录数据(例如双向链表中的下一个/上一个指针)。当您擦除其中之一时,容器将销毁对象并释放内存。像 vector 这样的序列容器严格区分分配和构造;已分配的内存量通常只会增加,但是当您擦除元素(在已调用擦除对象的析构函数之后),其他元素必须被移动以维护连续的内存布局。如果您之前没有见过内部分配工作,可能会觉得它与您平时使用的 new/delete 工作非常不同,但最终总会在某个地方进行构建和销毁。