WhoAreYou Asked:2020-02-13 21:04:39 +0000 UTC2020-02-13 21:04:39 +0000 UTC 2020-02-13 21:04:39 +0000 UTC std::vector 中的内存分配 772 我想实现自己的向量,以便更好地理解这个容器的操作。您能解释一下向量中的内存是如何“保留”的吗?我怀疑malloc在那里使用,然后在扩展容器时放置 new。还有一个假设是,内存只是由默认构造函数初始化,然后,在扩展时,通常会发生通常的赋值。 PS 因为我才编程一年,源代码很难读 c++ 1 个回答 Voted Best Answer αλεχολυτ 2020-02-13T21:42:37Z2020-02-13T21:42:37Z 正如对问题的评论中已经提到的那样,向量中的内存工作通过分配器,它参数化了模板类std::vector。如果未明确指定,则使用默认分配器。默认构造函数没有初始化,因为 预留,但实际上函数std::vector::reserve不应该创建对象,它的任务只是准备一个桥头堡(内存)。 当向量已经包含一些对象时,如果需要,保留将现有对象移动(调用移动构造函数)到新分配的新内存中。
正如对问题的评论中已经提到的那样,向量中的内存工作通过分配器,它参数化了模板类
std::vector
。如果未明确指定,则使用默认分配器。默认构造函数没有初始化,因为 预留,但实际上函数std::vector::reserve
不应该创建对象,它的任务只是准备一个桥头堡(内存)。当向量已经包含一些对象时,如果需要,保留将现有对象移动(调用移动构造函数)到新分配的新内存中。