【问题标题】:boost::pool::ordered_free() doesn't work wellboost::pool::ordered_free() 不能正常工作
【发布时间】:2019-03-05 06:49:39
【问题描述】:

我想使用内存管理器,我尝试使用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】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2010-11-30
      • 2021-10-02
      • 2017-08-06
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多