打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Winx基本类参考手册之AutoFreeAllocT
分类: winx 2006-11-30 14:17 1867人阅读 评论(0) 收藏 举报

目录(?)[+]

Winx基本类参考手册之AutoFreeAllocT

AutoFreeAllocT

 

template <class _Alloc, int _MemBlockSize = MEMORY_BLOCK_SIZE>

class AutoFreeAllocT

 

参数

_Alloc

实际分配内存空间的类。

 

_MemBlockSize

分配内存时,每个内存块的大小(以字节为单位)。缺省大小为MEMORY_BLOCK_SIZE ,即2048个字节。

 

枚举常量

MemBlockSize

内存块的大小,与_MemBlockSize相同。

 

HeaderSize

内存块头部信息的大小。

 

BlockSize

实际可用内存块的大小(MemBlockSize - HeaderSize)。

 

IsAutoFreeAlloctor

指定是否是自动释放的内存分配器。

 

成员函数

AutoFreeAllocT()

缺省构造函数,初始化为内存未分配。

 

AutoFreeAllocT(_Alloc alloc)

构造函数,初始化为内存未分配。

参数

                            _Alloc alloc       指定实际分配内存空间的类。

 

~AutoFreeAllocT()

析构函数,释放分配的内存块。该函数调用clear()

 

void* allocate(size_t cb)

分配内存。

参数

                            size_t cb                         需要分配内存的大小。

 

void* allocate(size_t cb, DestructorType fn)

分配内存。

参数

                            size_t cb                        

需要分配内存的大小。

DestructorType fn         

                        指定分配内存的析构方式。

 

void* allocate(size_t cb, int fnZero)

void* allocate(size_t cb)相同,用于原生类型(intlongchar等)的特化。

 

void winx_call clear()

释放分配的内存块。

 

void winx_call swap(AutoFreeAllocT& o)

交换AutoFreeAllocT的实例。

参数

                            AutoFreeAllocT& o

                                          所要交换AutoFreeAllocT的实例。

 

例子

 

class ClassA

{

private:

      int            var_int_;

      double           var_double_;

public:

      ClassA() { }

};

 

class ClassB

{

private:

      int            var_int_;

      double           var_double_;

public:

      ClassB() : var_int_(0), var_double_(0.0)  { }

      ClassB(const ClassB& cb) :

            var_int_(cb.var_int_), var_double_(cb.var_double_)

      {}

     

      ~ClassB() { }

};

 

 

class ClassC

{

private:

      int            var_int_;

      double           var_double_;

      ClassB           class_b_;

public:

 

      ClassC() { }

      ~ClassC() { }

};

 

int main()

{

      AutoFreeAlloc alloc;

 

      ClassA* ca = STD_NEW(alloc, ClassA);

      ClassA* caArray = STD_NEW_ARRAY(alloc, ClassA, 100);

        for (int i = 0; i < 100; ++i)

        {

                // print address of each element of Array caArray

                cout << caArray + i << endl;

      }

 

      ClassB cbTemp;

      // assign cbTemp to cb

      ClassB* cb = STD_NEW(alloc, ClassB)(cbTemp);

      ClassB* cbArray = STD_NEW_ARRAY(alloc, ClassB, 100);

 

      ClassC* cc = STD_NEW(alloc, ClassC);

      ClassC* ccArray = STD_NEW_ARRAY(alloc, ClassC, 100);

 

      // assign 1 to i1

      int* i1 = STD_NEW(alloc, int)(1);

      int* i2 = STD_NEW_ARRAY(alloc, int, 100);

 

      // assign 0.0 to d1

      double* d1 = STD_NEW(alloc, double)(0.0);

      double* d2 = STD_NEW_ARRAY(alloc, double, 100);

 

        int* i3 = STD_ALLOC(alloc, int);

        int* i4 = STD_ALLOC_ARRAY(alloc, int, 100);

 

        double* d3 = STD_ALLOC(alloc, double);

      double* d4 = STD_ALLOC_ARRAY(alloc, double, 100);

     

        char* s1 = STD_NEW(alloc, char);

        *s1 = 'T';

        cout << *s1 << endl;

        char* s2 = STD_NEW_ARRAY(alloc, char, 128);

        strcpy(s2, "hello world!");

        cout << s2 << endl;

 

        char* s3 = STD_NEW(alloc, char);

        char* s4 = STD_NEW_ARRAY(alloc, char, 128);

        strcpy(s4, "hello world 2!");

      cout << s4 << endl;

      return 0;

}

 

 
更多0
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C++new失败的处理
float和double变量的内存布局~~~~~~
java四类八种基本数据类型
基本数据类型
C++中const的用法
[转载]IT公司笔试面试题系列(二)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服