1. 所使用的类为预定义类

下面这段函数代码编译运行时没有问题的,不需要CPtr的定义

---PtrUser.h

class  CPtr; // 预定义
class CPtrUser
{
public:CPreUser():m_pPtr(null);{}~CPreUser(){delete m_pPtr;}void SetPtr(CPtr* p){m_pPtr = p;}
private:CPtr* m_pPtr;
};

当在Main中使用时,delete时,我们或许认为 m_pPtr 的析构函数会被调用

---main.cpp

CPtrUser user = new CPtrUser();
user->SetPtr(xxx);  // 其中xxx为CPtr类型指针
delete user;

但实际上,如果PtrUser.h先被包含的话,delete m_pPtr时,是不会调用CPtr析构函数的。如果期望析构函数被调用,可以通过#include“Ptr.h” 把 CPtr的定义放入到PtrUser.h中,这样C++编译器就能识别该类型,编译时,为delete添加析构函数调用。

2. 转为父类,而父类没有声明virtual的虚析构函数

Parent* p = new Child();
delete p; 

这种情况,Child的析构函数不会被调用。

class Parent
{
};class Child : public Parent
{
public:Child(){}~Child(){}
};

要让被调用,可以简单修改为 :

class Parent
{
public:virtual ~Parent(){};
};

本文转自:内存泄漏-Delete不调用析构函数的两种情况_春夜喜雨的专栏-CSDN博客

delete不调用析构函数的两种情况相关推荐

  1. 进一步封装axios并调用其读取数据(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)

    注意!!!(修改于2020年7月18日) 在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据 报错截图如下 报错内容: {&quo ...

  2. bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...

    很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...

  3. 【数字信号处理】周期延拓 ( 周期延拓的两种情况 | L ≥ N | L ≤ N )

    文章目录 一.周期延拓 二.周期延拓分两种情况 一.周期延拓 非周期的信号 通过 周期延拓 可以变为 周期信号 ; 周期延拓 : 非周期序列 构成 周期序列 的过程 ; 非周期序列 x(n)[0,N− ...

  4. 在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况

    在origin 2018中同时画两个图,带errorbar和不带errorbar两种情况 在一个图层里同时画两幅图 两幅图坐标可不一致 ①在当前图层中,选中图层左上角的 1 标志 ②右键 1 →图层内 ...

  5. Verilog HDL中容易生成锁存器的两种情况

    在Verilog HDL的程序设计中,有两种情况会生成锁存器. 第一种情况 在always块中使用if语句,但是没有else,这会导致当条件不成立时,没有其他语句可执行,使得被赋值的寄存器一直保持不变 ...

  6. 修改db2管理服务器,创建DB2管理服务器的两种情况

    DB2管理服务器在创建时分为创建一个和创建多个两种情况,下面就为您详细介绍这两种创建DB2管理服务器的情况,供您参考学习. 一.创建DB2管理服务器(只能创建一个) 1.首先创建管理服务组用户(可不建 ...

  7. MySQL笔记-解决...mysql.sock (13)(两种情况会产生此问题)

    遇到这个mysql.sock(13)一般是两种情况. 一个是mysql.sock权限不够,最少要个775权限: chmod -R 775 /var/lib/mysql/ 如果嫌烦的话赋予777就可以了 ...

  8. java项目打jar包的两种情况

    java项目打jar包的两种情况 本文介绍一下java项目打jar包时的两种情况各怎么操作 方法/步骤 1.  1 一.java项目没有导入第三方jar包 这时候打包就比较简单: 1.  首先在Ecl ...

  9. 最小成本排序:两种情况

    最小成本排序:两个数交换,这两个数相加,一组数全部交换成有序之后,累加和就是成本. 如何求出最小的成本,有一点难度,主要在于有两种情况的分析,一种是每个元素交换到正确位置(会形成一些闭合的圆),进行计 ...

最新文章

  1. 线性回归——最小二乘法_实例(二)
  2. stm32核心板可以点亮灯吗_STM32库函数点亮LED
  3. 《Android艺术开发探索》学习笔记之View的事件体系(一)
  4. SQL语句增加字段、修改字段、修改类型、修改默认值
  5. delphi excel取批注所在的行列_35个Excel使用技巧
  6. pb通过对象名称调用对象_C++ 可调用对象(二)
  7. java中如何传递参数给控制器_如何使用ui-router中的ui-sref将参数传递给控制器
  8. LeetCode 5354. 通知所有员工所需的时间
  9. C#制作多媒体播放器
  10. 《MATLAB智能算法30个案例》:第11章 基于多层编码遗传算法的车间调度算法
  11. pulseaudio-点点滴滴
  12. 数据库原理与应用学习笔记(一)
  13. SAM简单介绍(百度翻译)
  14. python人物关系网络图共现_文本分析之制作网络关系图
  15. Windows 由于无法验证发布者,windows阻止控件安装怎么办
  16. debian无法使用ifconfig
  17. iOS 13.2升级后:iPhone、iPad频繁杀后台,怎么解决呢?
  18. 认知决定你的格局和财富差距
  19. 英特尔® 快速存储技术 RAID 功能;按芯片组/控制器集线器排列
  20. Maven 父类中的管理依赖子类无法使用

热门文章

  1. 单片机实用工具大全,超级赞,工程师必备!
  2. python3 object_detection_demo_yolov3_async.py出现ImportError: numpy.core.multiarray failed to import
  3. python编程基础_月隐学python第2课
  4. 任意整数分频(图文并茂)
  5. chromedriver 下载_centos7中配置python爬虫selenium+chromium+chromedriver环境
  6. linux数据库实例开机启动不了,linux下Oracle数据库实例开机自启动设置
  7. 20220129CTF刷题-- WEB方向
  8. 牛客小白月赛16练习
  9. 20172327 2017-2018-2 《程序设计与数据结构》第五周学习总结
  10. Oracle中大批量删除数据的方法