实现一个总是以(2(的幂分配内存的内存分配器更好吗?有没有其他有效的方法,比如分配的倍数?分配逻辑是否会出现碎片化问题,如(8(分配的倍数?
有一种叫做伙伴内存分配器的东西,它是Linux内核中的一种东西,但它用于分配物理页面帧,而不是虚拟内存。
Jemalloc似乎为虚拟内存实现了一个伙伴内存分配器。
使用操作系统malloc
以2的幂分配内存没有任何好处-事实上,使用Glibc-malloc时会浪费内存-这是因为128 KiB的分配实际上会使用mmap
多分配一页,并使用额外的内存页来存储几个指针。如果你需要一块内存,并且担心浪费空间,你不会直接使用malloc
,而是使用操作系统mmap
。