一个非常简单的C++内存池方案

本文介绍了如何创建一个适用于游戏开发的C++内存池,以提高性能并避免内存碎片。内存池主要针对一次性分配、直到游戏结束才释放的场景,以及需要临时缓冲区的需求。通过支持任意字节对齐,优化了内存利用率,特别是对于SIMD操作。代码简洁,通过模板实现,适合多线程环境,通过为每个线程分配独立内存池来确保线程安全。
摘要由CSDN通过智能技术生成

在游戏中频繁使用new与delete将会导致性能的下降,还可能造成内存碎片。

使用以一个自定义的内存分配器将是很重要的。


创建一个通用又强大效率性能又高的内存分配器将是困难的,所以这个的分配器面向下面的情况使用:

1. 一开始就就申请,直到游戏退出才释放


这种情况我们无需做分配器内部的内存释放,仅需将分配器本身释放掉即可


2. 申请后立即释放


当然不算是立即释放,不然就没用了。

这种情况一般是需要一个临时缓冲区,或者使用一个临时对象。

我们的内存可以记录上次申请的情况,方便重复利用内存资源。



当然,我们还需要支持一个强大的功能——任意字节对齐

内存对齐对提高性能很有帮助,特别地,有些地方对字节对齐有硬性要求。

比如SIMD(单指令流多数据流)操作矩阵或者矢量时,就要求128位即16字节对齐。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值