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 ...
随机推荐
- eclipse 导入web项目后,线程假死
eclipse 导入web项目后,就出现关闭后,线程还存在的情况.使用java mission control 查看发现java script indexing线程在running. 关闭js验证后, ...
- CacheManagerUtils.java
package com.vcredit.framework.utils; import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager; ...
- el 表达式 和 ognl表达式
el (expression language) el 基础操作符 el 能够隐含对象(就是可以直接访问的) el 的两种使用方式,第二种好像在jsp中没有什么用,主要用于jsf el能够访问的对象( ...
- Array-练习-自定义功能
//html part <script type="text/javascript" src="out.js"></script> &l ...
- 使用 Sublime Text3 编辑 Markdown
安装插件 可以通过安装 Markdown 的插件来使 Sublime Text3 变成一款 Markdown 编辑器 1.Markdown Preview 插件 输入Shift + Ctrl + P, ...
- DataSet, BindingSource, BindingNavigator Relationship
Multiple Bindings caused dataBing weird???? Text.DataBindings.Add(new Binding("Text", bs1, ...
- C++头文件,预处理详解
C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std; int add(in ...
- jquery中的$(document).ready()、JavaScript中的window.onload()以及body中的onload()的区别
body中的onload()和window.onload以及$(document).ready()的区别: 1.前两者都表示当页面加载元素(包括图片等信息)完毕后执行的操作,而且两者在各种浏览器中 ...
- 连接mysql问题 mysqlnd cannot connect to MySQL 4.1+ using old authentication
第一篇:PHP5.3开始使用MySqlND作为默认的MySql访问驱动,而且从这个版本开始将不再支持使用旧的用户接口链接Mysql了,你可能会看到类似的提示: #2000 - mysqlnd cann ...
- mysql 三种恢复方式
为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有 ...