数据结构与算法案例集-001-数据结构基础

来源:互联网 发布:卖牛仔裤的淘宝店铺 编辑:程序博客网 时间:2024/05/01 13:14
 

案例1-1 内存的分配与回收

目标

学习动态内存分配和对象的自我生命管理。

源文件:object_cd.cpp

///////////////////////////////////////////////////////////////

//

// object_cd.cpp: 对象的动态创建与生命的自我管理;

//

///////////////////////////////////////////////////////////////

#include <stdio.h>

 

//CXBufferItem: 测试用对象;

class CXBufferItem

{

public:

//对象的引用计数增加;

unsigned long       AddRef()

{

     m_cRef ++;

     return      m_cRef;

}

 

//对象的引用计数减少;

unsigned long       Release()

{

     m_cRef --;

     if(m_cRef <= 0)

     {

            //当引用计数不大于0,删除自己;

            delete this;

            return      0;

     }

     return      m_cRef;

}

 

public:

CXBufferItem() {m_cRef = 1;};

~CXBufferItem(){m_cRef = 0;};

 

private:

long             m_cRef;

 

};

 

//创建测试用的对象;

void* CreateBufferItem()

{

     return new CXBufferItem();

}

 

void main(void)

{

     CXBufferItem*      pxbi = NULL;

    

     //动态创建动象;

     pxbi = (CXBufferItem*)CreateBufferItem();

     if(pxbi != NULL)

     {

            //对象的自我删除;

            pxbi->Release();    

     }

     return      ;

}

在该案例中,对象pxbi动态创建;被创建时,其自身的引用计数为1;当对象不再需要时,调用对象的Release来释放自己。对象的Release首先减小它的引用计数的值,当该值不大于0时,对象直接删除自已。对象的AddRef接口可以增加自己的引用计数。


 

 

原创粉丝点击