C++析构函数自动调用问题 析构函数什么时候调用

首先要明确一点,系统只会自动释放栈内空间,而堆内空间需要用户自己维护。

C++中,除了new来的空间存放在堆内,其他均存放在栈中。

当单纯的创建对象的时候,对象存放在栈中,此时在程序块的}后面,系统会自动调用析构函数,释放掉栈空间。

但是,如果创建了指向new来的一块空间的指针的时候,如果在没有显示释放掉new到的堆空间时,系统是不会自动调用析构函数去释放栈空间中的指针的。

示例代码如下

#pragma once
#include <iostream>
using namespace std;
class CBase

{

public:

CBase(int num){this->num =num;cout<<num<<"号Base类构造函数运行!"<<endl;};

~CBase(){cout<<num<<"号Base类析构函数运行!"<<endl;};
private:
C++析构函数自动调用问题 析构函数什么时候调用
int num;
};

void main()

{

CBasebobj(1);//析构函数会自动调用

CBase*bptr = new CBase(2);

//deletebptr;//如果没有这句,系统不会自动运行2号的析构函数。

}
此处delete释放的是堆空间中的指针。指针释放后,系统会自动调用析构函数,释放栈中的CBase 2号对象。

更多内容可以参见后面转载的另一篇文章:http://blog.sina.com.cn/s/blog_88337d9601010k8q.html

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/208540.html

更多阅读

AutoCAD2011打开自动关闭问题 cad2011自动关闭

今天一大早发现CAD2011有问题了,双击DWG文件的时候CAD软件界面出现一会儿后又自动关闭,点击【开始】【程序】【CAD原程序】结果也一样,百度一下发现有一种从外文翻译过来的类似问题的解决方法,可是按照上面脱机版所述,愣是找不到相应的lo

修理LenovoT410i温度过高自动关机问题 lenovo t410i 驱动

有台2011年3月份生产的LenovoT410i总是运行一会儿自动关机,win7中的系统日志显示温度问题。用鲁大师温度测试时候发现CPU温度忽高忽地,风扇转速也忽高忽低,相当不稳定转速从3800到4300之间波动。测试不到3分钟,必定由于保护自动关

声明:《C++析构函数自动调用问题 析构函数什么时候调用》为网友一曲爱恨情仇分享!如侵犯到您的合法权益请联系我们删除