析构函数

当类的对象撤销时,析构函数被隐式调用。析构函数不是释放内存,而是释放内存前进行扫尾工作。

对象何时撤销?1,静态分配的,生存期过后撤销。2,动态分配的,delete时撤销。

析构函数的命名 ~类型( ),析构函数没有形参和返回值。

一个类只能有一个析构函数,如果程序员不显示的提供析构函数,编译器提供默认的析构函数。

为包含动态分配的内存的类和使用系统资源的类构造适合的析构函数。

动态内存管理

//Cat.h
#include<string>
#include<iostream>
class Cat {
private:std::string name;int age;
public:Cat() {name = "huahua";age = 0;}Cat(const std::string &name,int age) {this->name = name;this->age = age;}~Cat() {std::cout << name << "析构...\n";}
};

#include<string>
#include<cstdlib>
#include"Cat.h"
using namespace std;
int main() {double *ptr = new double(3.14);delete ptr;//释放单个变量,deleteptr = nullptr;//必须置为nullptrint *arr = new int[10]();//()的意思默认初始化,基本数据类型初始化为0,bool初始化false,//指针nullptr,对象调用默认构造函数delete[] arr;//释放数组delete[]arr = nullptr;Cat *c1 = new Cat("mimi", 1);delete c1;Cat *catArr = new Cat[3]();delete[] catArr;catArr = nullptr;system("pause");return 0;
}

mimi析构...
huahua析构...
huahua析构...
huahua析构...
请按任意键继续. . .

转载于:https://www.cnblogs.com/afreeman/p/8464501.html

析构函数和动态内存管理相关推荐

  1. C和C++安全编码笔记:动态内存管理

    4.1 C内存管理: C标准内存管理函数: (1).malloc(size_t size):分配size个字节,并返回一个指向分配的内存的指针.分配的内存未被初始化为一个已知值. (2).aligne ...

  2. C++ 动态内存管理:c/c++的动态内存管理,new/delete,operator new/delete,placement-new, 内存泄漏

    c/c++的动态内存管理 new/delete opeartor new/delete placement-new 内存泄漏 c/c++的动态内存管理 在开始之前首先要了解c和c++的内存分布,我简单 ...

  3. 动态内存管理:malloc和free以及new和delete的联系与区别

    动态内存管理:malloc和free以及new和delete的联系与区别 文章目录 动态内存管理:malloc和free以及new和delete的联系与区别 一. C/C++中程序内存区域划分: 二. ...

  4. 内存区划分;内存分配;堆、栈概念分析;动态内存管理数据结构及程序样例;核心态与用户态...

    一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放 2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初 ...

  5. C++---动态内存管理

    C/C++内存分布 栈:存储非静态局部变量.函数参数.返回值. 内存映射段:动态库. 堆:程序运行时动态内存分配. 数据段:存储全局变量.静态数据. 代码段:可执行代码,只读常量. C语言中动态内存管 ...

  6. C++动态内存管理好难怎么办?零基础图文讲解,小白轻松理解原理

    首先我们先了解一下内存: C语言使用malloc/free动态管理内存空间,C++引入了new/delete,new[]/delete[]来动态管理内存. 如果大家在自学C++中遇到困难,想找一个学习 ...

  7. 【带你吃透C++】C++动态内存管理

    C++动态内存管理 前言 1. C/C++内存分布 例题理解 2.C语言中动态内存管理方式( malloc/calloc/realloc和free) 3.C++中动态内存管理方式 new和delete ...

  8. 【C++】动态内存管理/move/以及移动构造与移动赋值运算符

    文章目录 1 .对象移动与右值引用 实际应用过程中遇到的问题及其解决方案 c++中临时变量不能作为非const的引用参数 2. 动态内存管理类 3. 对象移动与右值引用 4. 移动构造与移动复制运算符 ...

  9. 《C++应用程序性能优化::第五章动态内存管理》学习和理解

    <C++应用程序性能优化::第五章动态内存管理>学习和理解 说明:<C++应用程序性能优化> 作者:冯宏华等 2007年版. 2010.8.29 cs_wuyg@126.com ...

最新文章

  1. .NET(C#):使用Win32Exception类型处理Win32错误代码
  2. python真的这么厉害吗-Python为什么这么厉害?——Python ,能用来做什么
  3. 深度学习半自动标注_图像识别中标注工具labelImg的安装和使用——深度学习打标签...
  4. 一文吃透PHP和HTML的嵌套写法
  5. 剪映电脑版_七款手机剪辑app,效果堪比电脑软件
  6. 基于51单片机的函数信号发生器
  7. 品质管控计划ppt怎样写_线上求助:怎么写好PPT年终总结和年度计划?
  8. .NET 3.5 : 读写RSS或者ATOM
  9. Python加密保护-对可执行的exe进行保护
  10. jedis 连接池使用流程图
  11. python怎样实现封装_Python底层封装实现方法详解
  12. 大数据催生智慧园区_颠覆性的大数据时代催生革命发展
  13. Ubuntu在物理机系统安装和teamviewer安装过程问题和解决的记录
  14. 自训练和半监督学习介绍
  15. e4a 安卓获取ROOT权限的方法思路 转载
  16. 个人身份认证接口介绍
  17. Unity 2D动画控制器详解
  18. 用Python制作小游戏
  19. 微信硬件蓝牙设备开发之设备解绑(13)
  20. 【CSS3】object-fit与object-position及替换元素

热门文章

  1. 了解 Vue SSR 这一篇足以
  2. uni-app 组件传值
  3. flutter --- Windows下环境配置
  4. es6 --- 使用node的memoryUsage检测WeakMap()
  5. 24 React.createRef()用法细节分析
  6. html5播放视频只有声音不出现画面?
  7. 转:MAC 下安装PHONEGAP开发环境
  8. html5之web worker
  9. MySql连接异常解决
  10. BYZ原创天语w806测评--入手2天,总结优点、缺点.