1.在delete this之后进行的其他任何函数调用,只要不涉及到this指针的内容,都能够正常运行。一旦涉及到this指针,如操作数据成员,调用虚函数等,就会出现不可预期的问题。

2.如果在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。

note:

根本原因在于delete操作符的功能和类对象的内存模型。当一个类对象声明时,系统会为其分配内存空间。在类对象的内存空间中,只有数据成员和虚函数表指针,并不包含代码内容,类的成员函数单独放在代码段中。在调用成员函数时,隐含传递一个this指针,让成员函数知道当前是哪个对象在调用它。当 调用delete this时,类对象的内存空间被释放。在delete this之后进行的其他任何函数调用,只要不涉及到this指针的内容,都能够正常运行。一旦涉及到this指针,如操作数据成员,调用虚函数等,就会出现不可预期的问题。

参照资料:

http://blog.sina.com.cn/s/blog_4b4cf2af0100ywgv.html

delete this相关推荐

  1. Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题

    CORS(DELETE请求.PUT请求) Reject: HTTP 'DELETE' is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio- ...

  2. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  3. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  4. C++:随笔6---new\delete\虚方法\抽象方法

    指针是一种专门用来存储内存地址的数据类型.(他存储的不是具体的数据而是别人的地址) 常用做法是:创建一个变量,再把这个变量的地址赋值给一个指针,然后就可以用指针去访问这个变量的值. 事实上在C和C++ ...

  5. C++中的new和delete用法

    //个体 point *p=new point; //point类存在初始化成员函数point(void)的前提下才能这样赋值: delete p;//一维数组,这样赋值的话,p在程序里表示的就不是指 ...

  6. LeetCode刷题记录3——237. Delete Node in a Linked List(easy)

    LeetCode刷题记录3--237. Delete Node in a Linked List(easy) 目录 LeetCode刷题记录3--237. Delete Node in a Linke ...

  7. 在析构函数中delete this指针问题

    思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include <iostream> using namespace std; class A{ pub ...

  8. LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化

    文章目录 前言 1. 问题背景 2. 问题复现 3. Rocksdb 的 Delete-Aware 优化 3.1 可配置的 Delete-Aware调度 3.2 Compaction 逻辑对 dele ...

  9. leetcode 237: Delete Node in a Linked List

    题目: Write a function to delete a node (except the tail) in a singly linked list, given only access t ...

  10. 【C++】C/C++ 中default/delete特性

    C++类的特殊成员函数及default/delete特性 本文内容侧重个人理解,深入理解其原理推荐https://www.geeksforgeeks.org 目录 目录 C++类的特殊成员函数及def ...

最新文章

  1. 一个量子物理学家是怎样研究 AI 的? | 8月书讯
  2. (020)java后台开发之JAVA集合中的List接口
  3. 【解决办法】torch交叉熵使用时遇到 Dimension out of range
  4. Java集合常见数据结构-栈/队列/数组/链表/红黑树
  5. Builder Pattern 在 Objective-C 中的使用
  6. RT-Thread设备框架学习感悟
  7. 区块链应用开发人员_每个区块链开发人员都应该了解这些Web3和Metamask用例
  8. [Vue.js] 基础 -- 过滤器(格式化时间)
  9. Redis:分布式锁Watch
  10. 数据库报12516linux,ORA-12516故障解决
  11. python从入门到精通 清华大学出版社-清华大学出版社-图书详情-《Python语言程序设计》...
  12. 计算机物联网软件工程,关于计算机物联网的应用分析
  13. 计算机网络 互联网的基本知识竞赛,计算机网络知识竞赛复习资料.doc
  14. Qt QMenu圆角阴影超详细 干净圆角 屏蔽原生阴影 绘制阴影
  15. 《OceanBase 数据库系统概念》首次发布,系统精准定义 OceanBase
  16. iOS部分版本默认没有允许 app 访问蜂窝移动数据
  17. Educational Codeforces Round 95 (Rated for Div. 2)C. Mortal Kombat Tower(状态机dp)
  18. Android压缩Apk
  19. 作文第一次用计算机350,第一次做饭作文350字作文字
  20. 阿里云将在2018云栖大会·重庆峰会上推出重磅物联网平台

热门文章

  1. ios与mac的时间问题,修改闹钟时间,24小时制
  2. 卡特尔、辛迪加、托拉斯、康采恩有什么区别
  3. 代码大全2 --- 33章 个人性格
  4. Stata:Logit模型一文读懂
  5. 大话设计模式之爱你一万年:系列文章 - 导读
  6. RIGOL示波器测试特殊功能
  7. 纽约大学坦顿学院计算机排名,纽约大学坦顿工程学院排名多少?
  8. 硕士毕业论文参考文献整理、插入以及各种相关心得(限武汉大学EndNote软件)
  9. Linux的rsa命令,openssl命令行进行RSA加密解密
  10. Canon单反相机的镜头校正方法