C++提前delete
//////////////////////////////////////
///类析构以后,成员变量内存空间释放,
///函数 和 变量 还是可以引用的
//////////////////////////////////////
#include <iostream>
using namespace std;
class CTest
{
public:
CTest();
~CTest();
void Print() { cout<<"....."<<m_refCount<<endl; }
void AddRef();
void ReleaseRef();
int GetRef() { return m_refCount; }
void destroy();
); return m_ptr;}
int* getPtr(){ return m_ptr; }
void setPtr2(int* p2) { m_ptr2 = p2;}
private:
int m_refCount;
int* m_ptr;
int* m_ptr2;
};
CTest::CTest()
{
m_refCount = ;
m_ptr = NULL;
}
CTest::~CTest()
{
m_refCount = ;
delete m_ptr;//new的内存需要delete释放, 不然内存泄露。 系统只给指针值清空
}
void CTest::AddRef()
{
++m_refCount;
Print();
}
void CTest::ReleaseRef()
{
--m_refCount;
Print();
)
{
delete this;
//return;
Print();
}
}
void CTest::destroy()
{
delete this;
}
int main()
{
CTest* ct = new CTest; //一定要声明为指针,不然delete时会报错。
/*for(int _i = 0; _i < 5; ++_i)
{
ct->AddRef();
}
for(int _i = 0; _i < 6; ++_i)
{
ct->ReleaseRef();
}*/
int *a = NULL;
a = ct->setPtr();
cout<<"&a1 = "<<a<<endl;
cout<<"a1 = "<<(*a)<<endl;
);
ct->setPtr2(b);
delete ct;
cout<<"m_ptr = "<<(ct->getPtr())<<endl;
cout<<"&a1 = "<<a<<endl;
cout<<"a1 = "<<(*a)<<endl;
cout<<"b = "<<*b<<endl;
ct->Print();
//ct->ReleaseRef();
ct->Print();
system("pause");
;
}
C++提前delete的更多相关文章
- 浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...
- 声明提前js变量
声明提前问题相关 js的变量声明语句无论出现在何处,都会先与其他代码首先被执行,使用var声明关键词声明变量的 作用于是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量 ...
- C++11 之 delete 和 default
1 特殊成员函数 设计一个类,没有成员函数 (member function),只有数据成员 (member data) class DataOnly { private: std::string ...
- 深入理解JS的delete
原文链接: Understanding delete原文作者: Kangax原文日期: 2010年01月10日 翻译日期: 2014年02月07日 翻译人员: 铁锚 !!!!!!!!草稿版本的翻译完成 ...
- 【转】浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...
- 浅谈c++ new and delete or new [] and delete []
http://www.cnblogs.com/hazir/p/new_and_delete.html 在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问 ...
- C++11 之 " = delete "
1 缺省函数 设计一个类,没有成员函数 (member function),只有成员数据 (member data) class DataOnly { private: std::string st ...
- C++11 之 " = delete "
1 缺省函数 设计一个类,没有成员函数 (member function),只有成员数据 (member data) class DataOnly { private: std::string st ...
- 【M8】了解各种不同意义的new和delete
1.首先考虑new operator,new operator 可以认为做了三件事情:a.调用operator new分配一块内存:b.在这块内存上调用构造方法构造对象:返回指针. 2.operato ...
随机推荐
- ajaxfileupload.js
jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' ...
- WooCommerce代码收集
修改首页和分类页面每页产品数量 每页显示多少产品默认跟随设置 » 阅读设置 » 博客页面至多显示的值,若要产品索引页和博文索引页使用不同的设置,可以使用下面的代码为产品索引页单独设置每页产品数. ad ...
- 论url
http://www.cnblogs.com/yexiaochai/p/3650379.css文件中 background: (../images/logo.png); http://www.cnbl ...
- POJ 1986 Distance Queries(Tarjan离线法求LCA)
Distance Queries Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 12846 Accepted: 4552 ...
- Unity3D 开发 之 加载Android应用的环境
(1)下载安装JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html (2)下载安装Android SDK:htt ...
- 【译】在ASP.Net和IIS中删除不必要的HTTP响应头
引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...
- SLAM数据集
数据集 New College Dataset :: Main / Downloads Autonomous Space Robotics Lab: Devon Island Rover Naviga ...
- Spring单实例、多线程安全、事务解析
原文:http://blog.csdn.net/c289054531/article/details/9196053 引言: 在使用Spring时,很多人可能对Spring中为什么DAO和Se ...
- eclipse闪退
svn提交我的项目时,由于网络故障,提交不上去,一直checking.......,然后我强制关闭eclipse后重启,发现启动不了了,一点击,尝试打开的状态就突然没了,试了几次都这样,重启电脑打开还 ...
- impdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误
windows平台下,oracle 11.2.0.1在使用impdp向测试环境导入数据的时候,报出如下错误: 错误原因: 数据泵在写日志文件的时候,使用的是数据库字符集.如果客户端的环境变量NLS_L ...