AGG第七课 内存分配策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

    }

};

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


以上是关于AGG第七课 内存分配策略的主要内容,如果未能解决你的问题,请参考以下文章

JVM性能调优 第七章 内存分配策略

垃圾收集器与内存分配策略之内存分配与回收策略

垃圾收集器与内存分配策略-内存分配与回收策略

第七课 突破512字节限制--中

内存分配与回收策略

深入理解JVM内存分配策略