64,648
社区成员
发帖
与我相关
我的任务
分享
一个引用计数的测试类,本想单步看看~~!
#include <iostream>
using namespace std;
class reference
{
public:
reference(const char* x=""):value(new count(x)){}
reference(const reference&rhs):value(rhs.value)
{
++value->refcount;
}
~reference(){
if(--value->refcount==0) {delete value;}
}
const char* str()
{
return value->data;
}
private:
struct count
{
int refcount;
char* data;
count(const char* ele):refcount(1) { data=new char[strlen(ele)+1];
strcpy_s(data,strlen(ele)+1,ele);
}
~count() {delete []data; } //在这里下断点就有此提示,不知何故,是delete指针的问题?
};
count *value;
};
int _tmain(int argc, _TCHAR* argv[])
{
reference test("hello world!");
cout<<test.str()<<endl;
reference dest=test;
return 0;
}
operator delete class
call the destructor... ///断点在这里面的~count(),下一步将是free memory,不是我们的源代码文件...
free the memory of the class
ret