面试真题

C++ · 困难 · 拼多多

STL 空间配置器实现原理,malloc中维护了一个内存池,为什么需要基于内存池的空间配置器?

困难 C++ 🎤 拼多多
参考答案
结论:STL空间配置器分两级,一级直接malloc,二级对<128B小块用内存池+自由链表。原理:malloc虽内部有池,但通用分配带元数据开销(如size头、对齐碎片),频繁小分配易碎且慢;二级配置器将小块按8倍数划16个自由链表,分配时直接取节点,释放回链表,避免频繁系统调用,减少碎片和额外空间。示例:申请24B向上取整到32B从对应链表取。必要性:提升小对象分配效率,契合STL容器高频小块需求。
题目整理自公开面经,答案由校招宝自研生成,仅供参考