如何重用先前在c ++中分配给向量的内存块

时间:2018-02-14 03:41:22

标签: c++ c++11 memory-management boost boost-pool

我有不同结构的多个结构对象向量。现在我想为所有矢量对象重用相同的内存。即,一旦我的工作完成了一个向量,我想从内存中擦除它的元素并将该内存分配给另一个向量。 即,第一矢量是一个结构类型对象,第二个矢量是完全不同结构的结构类型对象。 我使用的是Windows 8.1 64位。

2 个答案:

答案 0 :(得分:1)

擦除向量元素时,在调用std::vector::shrink_to_fit之前,不会释放为向量元素分配的内存。因此,您不必执行特殊操作来重用已分配的内存。

你的意思不清楚

  

一旦我的工作完成了一个向量,我想从中删除它的元素   内存并将该内存分配给另一个向量。

您可以继续使用具有相同内存的相同向量,或者可以调用v1.swap(v2)来交换两个向量的已分配内存,或者可以将一个向量的已分配内存移动到另一个向量v2 = std::move(v1)。 / p>

它适用于包含相同类型或指针元素的向量,不适合您的情况。

答案 1 :(得分:0)

能够将分配的内存从一种类型的向量移动到包含另一种类型的向量不是std::vector支持的功能。我建议写/找另一个符合你需要的容器。