确定指针是否位于自定义内存管理器中的有效边界

时间:2017-01-28 03:36:19

标签: c++ memory-management

我有一个CS任务,使用链表在c ++中编写基本内存管理器。管理器分配内存页面,每个页面包含固定数量的对象(在这种情况下,所有对象的大小都相同),以及每个块末尾的可选头字节和填充以进行调试。页面还包含指向下一页内存的指针。当块被释放时,它们被添加到一个单独的空闲对象列表中,并且在请求内存时分配新页面但空闲列表为空。

我正处于释放对象的位置,如果设置了管理器中的调试标志,我验证确保块是A)尚未释放,B)在有效的块边界上。我可以处理的第一个案例,但我无法弄清楚第二个案例。该操作应该是在恒定的时间内完成的(所以我不能遍历页面来确定它),并且在头字节和填充之外(块可能没有,取决于设置)我不知道什么页面物体在上面或周围物体上。

0 个答案:

没有答案