在游戏中频繁使用new与delete将会导致性能的下降,还可能造成内存碎片。
使用以一个自定义的内存分配器将是很重要的。
创建一个通用又强大效率性能又高的内存分配器将是困难的,所以这个的分配器面向下面的情况使用:
1. 一开始就就申请,直到游戏退出才释放
这种情况我们无需做分配器内部的内存释放,仅需将分配器本身释放掉即可
2. 申请后立即释放
当然不算是立即释放,不然就没用了。
这种情况一般是需要一个临时缓冲区,或者使用一个临时对象。
我们的内存可以记录上次申请的情况,方便重复利用内存资源。
当然,我们还需要支持一个强大的功能——任意字节对齐。
内存对齐对提高性能很有帮助,特别地,有些地方对字节对齐有硬性要求。
比如SIMD(单指令流多数据流)操作矩阵或者矢量时,就要求128位即16字节对齐。