自己的引用计数

原创 2013年12月02日 14:41:18
#include<iostream>  
using namespace std;  

class ObjBase  
{  
public:
	int *pi;  //数据
	size_t* use;  //计数器
	ObjBase()
	{  
		cout << "U_ptr constructor called !" << endl;  
	}  
	~ObjBase()  
	{  
		cout << "U_ptr distructor called !" << endl;  
	}  
};  
class Inherit:public ObjBase
{
public:
	Inherit(int* p)
	{
		pi = p;
		use = new size_t(1);
		cout << "HasPtr constructor called ! " << "use = " <<*use << endl;  
	}

	Inherit(const Inherit& orig)
	{
		pi = orig.pi;
		use = orig.use;
		++*use;
		cout << "Inherit constructor called ! " << "use = " << *use << endl;  
	}

	Inherit& operator=(const Inherit& rhs)
	{  
		++*rhs.use;  
		if (--*use == 0)  
		{
			delete use;  
			delete pi;  
		}
		use = rhs.use;   
		pi = rhs.pi;
		return *this;  
	}  

	~Inherit()  
	{  
		cout << "Inherit distructor called ! " << "use = " <<*use << endl;  
		if (--*use == 0)  
		{
			delete pi;  
			delete use;
		}
	}  
};

int main(void)  
{  
	int *pi = new int(42);  //一个数据

	Inherit *hpA = new Inherit(pi);
	Inherit* hpB = new Inherit(*hpA);
	Inherit* hpC = new Inherit(*hpA);
	Inherit* hpD = new Inherit(*hpB);

	int *pi2 = new int(42);  //一个数据
	Inherit* hpE = new Inherit(pi2);
	*hpE = *hpA;

	delete hpA;
 	delete hpB;
    delete hpC;
 	delete hpD;
	delete hpE;
	return 0;  
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

OC-引用计数

OC-引用计数 引用计数与内存管理息息相关 基础 原理非常简单 每个对象内部都维护着自己的引用计数 alloc方法,将使对象的引用计数为1 retain方法可以使对象的引用...
  • sdlg2015
  • sdlg2015
  • 2015年12月06日 21:07
  • 362

引用计数

生命控制客户不应直接控制组件的生命期原因:当使用完一个接口而仍然使用另一个接口时,是不能将组件释放掉的。由于很难知道两个接口指针是否指向同一组件,因此决定何时可以安全的释放一个组件将是极为复杂的。得知...
  • sinkou
  • sinkou
  • 2007年06月02日 12:48
  • 3540

cocos2d-x中的引用计数原理

本文基于3.2版本,适用于3.0及其以上版本,2.X版本可能是使用不同的方式进行处理,本文未对比2.X版本的源代码。首先看一下cocos2d-x中对象的继承体系:                  ...
  • realxie
  • realxie
  • 2016年04月03日 22:30
  • 1639

Cocos2dx中的引用计数和自动回收池

本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=126 一、引用数 引用计数是c/c++工程中一种古老的内存管理方式。Ios SDK在NSAuto...
  • qinning199
  • qinning199
  • 2013年10月19日 00:44
  • 4698

ARC 下引用计数的打印

在管理内存的时候经常需要打印对象的引用计数,来检测对象是否发生内存泄漏的情况...
  • yishabeier152
  • yishabeier152
  • 2016年09月03日 11:21
  • 654

NSString的几种引用计数

//字符串常量 系统不收回不引用 retain count -1 或unsigned int 2147483647     NSString *stringConst = @"hello"; ...
  • TengTengIos
  • TengTengIos
  • 2015年04月29日 16:50
  • 314

c++11-智能指针和引用计数

一、本节内容 本节内容包括: 对标准库的扩充: 智能指针和引用计数 RAII 与引用计数std::shared_ptrstd::unique_ptrstd::weak_ptr ...
  • icandoit2010
  • icandoit2010
  • 2017年02月23日 10:20
  • 380

cocos2dx 引用计数

转载自:http://www.cocoachina.com/bbs/read.php?tid=195219点击打开链接 我们经常的说每秒多少多少帧,其实这个帧需要多少时间不是固定的,这个需要看每帧我...
  • xi_mi_
  • xi_mi_
  • 2016年11月17日 20:25
  • 296

多线程引用计数问题(避免坑爹)

你没有注意到细节 -多线程引用计数问题          其实写这篇文章完全是偶然所得,桌面安全有一套比较严格的测试平台,整个这套测试平台是建立的Appverifer的基础之上。而且,这套测试平台...
  • gyb999
  • gyb999
  • 2012年06月27日 16:18
  • 1443

如何实现一个引用计数?

要保证线程安全、要保证高效。 这是一个跟芯片架构、编译器都相关的工作。 剖析boost::detail::shared_ptr的计数实现机制: // shared_ptr中的引用计数成员属性pn bo...
  • lonelyrains
  • lonelyrains
  • 2016年04月12日 16:29
  • 3438
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己的引用计数
举报原因:
原因补充:

(最多只允许输入30个字)