我想使用内存管理器,并且尝试使用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
删除所有元素?
答案 0 :(得分:0)
基于Boost documentation,看起来ordered_free(ptr_1)
只是删除了一块内存,但是您可以使用ordered_free(ptr_1, 3)
删除整个数组。