AGG第七课 内存分配策略

说明    

    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);

    }

};

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






     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1961158,如需转载请自行联系原作者

上一篇:《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系


下一篇:《软件工艺师:专业、务实、自豪》一1.1 何谓资深开发者