微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2 的幂与 8 的倍数的内存分配

如何解决2 的幂与 8 的倍数的内存分配

实现一个总是以 (2) 的幂分配内存的内存分配器是否更好?有没有其他有效的方法可以说(8)分配的倍数?分配逻辑是否会出现碎片问题,例如 (8) 个分配的倍数?

解决方法

有一个叫做 buddy memory allocator 的东西,它是 Linux 内核中的一个东西,但它用于分配物理页帧,而不是虚拟内存。

Jemalloc 似乎为虚拟内存实现了一个伙伴内存分配器。


使用操作系统 malloc 以 2 的幂分配内存没有任何好处 - 事实上,使用 Glibc malloc 时会浪费内存 - 这是因为 128 KiB 的分配实际上会使用 mmap 分配一页,并使用额外的内存页来存储几个指针。如果您需要一块内存并担心浪费空间,则不会使用 malloc,而是直接使用操作系统 mmap

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。