boost :: pool :: ordered_free()效果不佳

时间:2019-03-05 06:49:40

标签: c++ boost memory-management

我想使用内存管理器,并且尝试使用boost::pool,如下所示,但是ordered_free()不能释放所有元素。

样本↓

#include <iostream>
#include <boost\pool\pool.hpp>
using namespace std;

int main()
{
    boost::pool<> p(sizeof(int));
    int* ptr_1= (int*)p.ordered_malloc(3);
    for (int i = 0; i < 3; i++)
    {
        ptr_1[i] = i;
    }
    p.ordered_free(ptr_1);

    int* ptr_2 = (int*)p.ordered_malloc(3);
    for (int i = 0; i < 3; i++)
    {
        ptr_2[i] = i;
    }

    p.ordered_free(ptr_2);
    return 0;
}

在这种情况下,p.ordered_free(ptr);仅删除5个字节,并且ptr_2的存储位置与ptr_1不同。是否可以使用boost::pool删除所有元素?

1 个答案:

答案 0 :(得分:0)

基于Boost documentation,看起来ordered_free(ptr_1)只是删除了一块内存,但是您可以使用ordered_free(ptr_1, 3)删除整个数组。