实现采用 Best Fit、支持相邻空闲块合并的单线程内存分配器。
Sorry o(╥﹏╥)o,暂无参考答案。带这道题,问问AI吧~
问 AI
本题目录
相关面经
1 篇拼多多
AI Infra频繁调用系统malloc/free会有开销,也可能产生碎片。要求初始化时预分配一块连续内存,后续自己管理分配、切分和回收。 接口: MyAllocator(int capacity) void* allocate(int size) void free(void* ptr) 具体要求: 1. 初始化时,整个[0, capacity)区间为空闲状态。 2. allocate按Best-Fit策略选择空闲块: 找到大小大于等于size的最小空闲块; 如果多个空闲块大小相同,选择起始地址最小的; 分配后切出需要的空间,剩余部分保留为空闲块; 无法满足请求时返回nullptr。 3. free释放指定块,并立即检查左右相邻空闲块,完成合并。 4. 保证释放的指针由allocate返回,不会重复释放。 5. 不需要考虑线程安全。 6. allocate和free的复杂度尽量低于O(n),n为当前内存块数量。
