【文件属性】:
文件名称:MemoryAllocator:自定义内存分配器
文件大小:550KB
文件格式:ZIP
更新时间:2021-02-09 23:39:21
C++
内存分配器
基于显式空闲列表的自定义内存分配器
有几种常用的实现自定义内存分配器的方法,例如隐式空闲列表,显式空闲列表,隔离的空闲列表和平衡的二进制搜索树,每种方法各有优缺点。 在这里,我使用显式的空闲列表来实现我的自定义内存分配器,目的是学习和实践内存管理知识。
块
块用于表示整个连续存储块中的分配或空闲存储块。 当我们要跟踪分配或空闲块的地址,大小和额外的元数据时,将需要一些基本信息。 因此,块的结构如下。
地址(隐式)
尺寸
上一个(明确的)
下一个(明确)
块结构:
struct Block
{
size_type size;
Block* prev;
Block* next;
};
分配
首先适合:
迭代空闲列表util,使空闲块符合所需的分配大小
优点:快速
缺点:更多的内存碎片
下一个适合:
从最后一次拟合开始迭代*列表util free block f
【文件预览】:
MemoryAllocator-main
----premake5.lua(1KB)
----premake5.exe(1.3MB)
----LICENSE(1KB)
----README.md(2KB)
----include()
--------detail()
--------ExplicitFreeListAllocator.h(4KB)
--------DefaultAllocator.h(315B)
--------Allocator.h(2KB)
----setup.bat(25B)
----.gitattributes(66B)
----test()
--------main.cpp(4KB)