内存池MemoryPool——定位放置 new

网上找了好多内存池的实现方法,大同小异,但都有个缺点,对于用户来说不好用,很多需要重载类的new和delete方法,要么继承一个重载了上述两个方法的父类。

今天详细看了下公司项目上的内存池的实现,写的很好,最起码用户用起来很舒服。但由于借鉴了公司内部代码,那源码就不能上传了。

相比两种实现,我觉得区别的关键点在于:C++ 的new操作符不仅分配了内存,并且调用了构造函数,而我们自己的内存池只是分配了内存,无法构造对象,所以大部分的内存池实现都需要重载new和delete。

这里要提到一个知识点:定位放置 new,那什么是定位放置 new呢?就是在特定的内存位置上,构造一个对象。那这个特定的内存位置是什么?那就是我们的内存池给分配的内存空间啊,说到这是不是忽然开朗了。

不多说,来几句伪代码说下定位放置 new的具体用法:

// 分配空间
void* pData = malloc(sizeof(_T));
// 在已分配的空间上构造对象
new(pData) _T();

至于具体的内存池逻辑,网上很多,就不具体说了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值