【发布时间】: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