7.1. 为何需要重载分配函数?

深入探讨如何重载内存分配机制之前,让先思考一下:为什么需要这样做?事实上,大多数开发者(即便是资深开发者)都从未涉足此领域,甚至从未考虑过有这种需求。然而,我们将用数个章节专门讨论这个话题 —— 其中必有缘由…

内存分配的本质在于:通用场景下不存在完美解决方案,只有针对特定场景的优化方案。编程语言A中的最佳实践,可能完全不适合语言B或其他使用场景。

以Java/C#等语言为例,其惯用法会频繁分配小对象,内存分配策略会针对此模式优化。而在C语言中,开发者通常只在处理超大对象(无法放入栈),或构建节点型数据结构时才进行动态分配,其最优策略就截然不同。第10章将展示当分配对象具有相同大小和对齐要求时的特殊优化案例。

C++强调控制力,为开发者提供了高度灵活的工具集。当我们清楚分配操作的上下文时,就能利用这些工具实现比默认方案更优(有时是显著优化,如第11章所示!)的效果,包括:更快的执行速度,更确定性的执行时间,更低的内存碎片,等。