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 ...
随机推荐
- android之进度条组件ProgressBar
首先是main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
- 关于web-dev-server 记录
package.json "scripts": { "init": "webpack --progress --config webpack.dev. ...
- Centos7 创建个文件 thread 怪现象
我在~下创建个目录thread, 然后写了个程序, 再执行, 提示需要权限, 之后我重命名下文件的名字, 重新编译下, 就可以正常执行了.
- 形行色色的下拉菜单(HTML/CSS JS方法 jQuery方法实现)
HTML/CSS方法实现下拉菜单来源:慕课网<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- 【iCore3 双核心板_ uC/OS-III】例程八:互斥信号量
实验指导书及代码包下载: http://pan.baidu.com/s/1geDzqqn iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- Yii源码阅读笔记(二十三)
Module类中的辅助功能方法: /** * Returns an ID that uniquely identifies this module among all modules within t ...
- SaveData Functions
Here are some save function for some situations: Yes/No /// <summary> ///保存数据到WCF /// </sum ...
- Laravel-5.1 ---- 将mews captcha整合到项目中!
经过摸索,终于能在laravel 5.1中应用验证码了. 因为英语渣五水平,所以几乎没搜索到什么有用的,于是考虑在github上搜索验证码包! 提示: github上的package中往往会有使用说明 ...
- $(document).ready(function(){});
$(document).ready 里的代码是在页面内容都加载完才执行的,你直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,如果你标签里执行的代码调用了当前还没加载过 ...
- 白话学习MVC(七)Action的执行一
一.概述 在此系列开篇的时候介绍了MVC的生命周期 , 对于请求的处理,都是将相应的类的方法注册到HttpApplication事件中,通过事件的依次执行从而完成对请求的处理.对于MVC来说,请求是先 ...