为什么 malloc 总是多分配内存?

Why malloc always does more than I asked for?

为什么 malloc 总是多分配内存?

当你调用 malloc(13) 时,真的只拿到了 13 字节吗?其实远不止如此。为了支持 free() 和内存对齐,分配器必须在用户内存前后塞入 Header、Back Pointer 和 Padding。这些元数据让内存布局变得复杂,也导致了 Internal Fragmentation。文章通过从零构建一个简单的分配器,揭示了从 Bump Allocator 到 Free List 的演变,解释了为什么那些看似浪费的 Padding 字节对系统至关重要,以及它们为何无法被复用。

那些位于元数据和实际对象之间的 Padding 字节,在整个分配生命周期中都只是闲置在那里,无法被复用。

同日更多故事

2026-07-23