dlmalloc、nedmalloc

3dlmallocnedmalloc

 

Dlmallocnedmalloc等知名分配器估计搞内存池的人都知道,dlmalloc是单线程的,不考虑锁,nedmalloc是多线程的,带锁,其实nedmalloc也是线程缓存式的内存池,具体实现我就不说了,nedmalloc我大致看了一下,dlmalloc我也没有深入分析过。

 

关于两者分配性能前面都提到过,就不再说了,如果不想自己研究内存池,用这两者绝对是很合适的一个选择,取代crt里面的malloc系列是正合适,我曾经很长一段时间将nedmalloc作为server程序的默认内存分配器,而不是用前面提到的多线程内存池,我甚至为程序定义了一个IAllocator,根据不同选项采用不同的内存分配模式,采用nedmalloc的时候就用

 

        #pragma warning(disable : 4291)

        class ned_alloc

        {

        public:

                static void *operator new(size_t size)

                {

                        return nedmalloc(size);

                }

                static void operator delete(void *p, size_t size)

                {

                        nedfree(p);

                }

        };

 

        typedef ned_alloc  galloc;

        #define gmalloc    nedmalloc

        #define gfree     nedfree

        #define gcalloc          nedcalloc

        #define grealloc   nedrealloc

如此的确满足了很多时候的需求,而且calloc realloc等都支持,的确是个大而全的好解决办法。如果不是最近有空亲自实现了一个简单的线程相关内存池,我估计我还会继续使用nedmalloc作为默认的server程序内存分配方案。

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值