首页 > 其他 > 详细

AGG第七课 内存分配策略

时间:2017-08-30 19:40:52      阅读:224      评论:0      收藏:0      [点我收藏+]

说明    

    AGG采用new/delete函数操作堆内存,有时候并不是最佳的选择。另一方面,STL的内存分配策略太繁琐,因此没有采用。在agg_allocator.h文件中描述目前内存分配策略:

template<class T> struct allocator

{

    static T* allocate_array(unsigned size) { return new T [size]; }

    static void free_array(T* v, unsigned) { delete [] v; }

};


具体用法如下:

char* array = allocator<char>::allocate_array(size);

allocator<char>::free_array(array);


理解

    所有的内存分配都是按照这种方法,没有数组要求对数组元素进行初始化工作。所有的分配数据都是POD类型。POD类型被认为是C语言的结构体,没有携带任何的类的特性,能够轻松的进行memcpy或者strcpy。


可以自定义内存分配器,例如:

template<class T> struct allocator

{

    static T* allocate_array(unsigned size)

    {

        return (T*)malloc(sizeof(T) * size);

    }

    static void free_array(T* v, unsigned size)

    {

        if(v) free(v);

    }

};

应用场景:创建自定义的超高效堆内存


AGG第七课 内存分配策略

原文:http://fengyuzaitu.blog.51cto.com/5218690/1961158

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!