allocator, allocation_tracker
allocator 和allocation_tracker 提供一种内存跟踪的手段
主要应用场景:
- 内存是否被使用越界
- 是否有内存未被释放
实现方法:
(1)分配的内存被记录在allocations (map 类型)中
map<void*, allocation_t*> allocations
第一个参数void* 是分配的数据地址return_ptr(并不是实际占用的物理内存地址)
第二个参数allocation_t*
struct {
uint8_t allocator_id;
void* ptr; return_ptr
size_t size;
bool freed; 是否被free 了
} allocation_t;
通过这个管理机制可以完成内存是否被释放的检测
(2) 在每块内存的头和尾部,放入一个固定的随机数(启动时生成),在分配内存的时候写入,释放的时候检查
如果检查这快地址的内容被改写啦,则说明有内存访问越界了