boost :: pool :: ordered_free()不能正常工作

问题描述 投票:0回答:1

我想使用内存管理器,我尝试使用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删除所有元素?

c++ boost memory-management
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.