我试图了解自定义内存分配器是如何工作的,我偶然发现了this。 此特定功能做什么以及为什么有必要。为什么将其声明为静态内联
static inline size_t word_align(size_t size) {
return (size + (sizeof(size_t) - 1)) & ~(sizeof(size_t) - 1);
}
我也不明白为什么需要malloc基础。有人可以解释一下这里发生了什么。甚至更好地为我提供了更简单的带有拆分/合并的自定义分配器示例。
答案 0 :(得分:0)
正如Harper提到的那样,该功能的目的是找到与 size_t 对齐的下一个内存地址,但具有足够的额外空间来存储 size 个字节。对齐是一个很大的性能问题。 Google 比对效果。 Malloc为此提供了某些保证。在这种情况下,静态通常意味着该功能不应在其所在模块的外部看到。Google 内部链接。内联是对编译器的建议,它可以自由地用函数体替换实际的函数调用以提高性能。 Google 内联扩展。