delete this
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相关推荐
- 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- ...
- Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)
1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...
- C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)
1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...
- C++:随笔6---new\delete\虚方法\抽象方法
指针是一种专门用来存储内存地址的数据类型.(他存储的不是具体的数据而是别人的地址) 常用做法是:创建一个变量,再把这个变量的地址赋值给一个指针,然后就可以用指针去访问这个变量的值. 事实上在C和C++ ...
- C++中的new和delete用法
//个体 point *p=new point; //point类存在初始化成员函数point(void)的前提下才能这样赋值: delete p;//一维数组,这样赋值的话,p在程序里表示的就不是指 ...
- 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 ...
- 在析构函数中delete this指针问题
思考:在析构函数中delete this指针,运行下面代码会产生什么样的结果呢? #include <iostream> using namespace std; class A{ pub ...
- LSM 优化系列(四) -- Rocksdb和Lethe 对Delete问题的优化
文章目录 前言 1. 问题背景 2. 问题复现 3. Rocksdb 的 Delete-Aware 优化 3.1 可配置的 Delete-Aware调度 3.2 Compaction 逻辑对 dele ...
- 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 ...
- 【C++】C/C++ 中default/delete特性
C++类的特殊成员函数及default/delete特性 本文内容侧重个人理解,深入理解其原理推荐https://www.geeksforgeeks.org 目录 目录 C++类的特殊成员函数及def ...
最新文章
- 一个量子物理学家是怎样研究 AI 的? | 8月书讯
- (020)java后台开发之JAVA集合中的List接口
- 【解决办法】torch交叉熵使用时遇到 Dimension out of range
- Java集合常见数据结构-栈/队列/数组/链表/红黑树
- Builder Pattern 在 Objective-C 中的使用
- RT-Thread设备框架学习感悟
- 区块链应用开发人员_每个区块链开发人员都应该了解这些Web3和Metamask用例
- [Vue.js] 基础 -- 过滤器(格式化时间)
- Redis:分布式锁Watch
- 数据库报12516linux,ORA-12516故障解决
- python从入门到精通 清华大学出版社-清华大学出版社-图书详情-《Python语言程序设计》...
- 计算机物联网软件工程,关于计算机物联网的应用分析
- 计算机网络 互联网的基本知识竞赛,计算机网络知识竞赛复习资料.doc
- Qt QMenu圆角阴影超详细 干净圆角 屏蔽原生阴影 绘制阴影
- 《OceanBase 数据库系统概念》首次发布,系统精准定义 OceanBase
- iOS部分版本默认没有允许 app 访问蜂窝移动数据
- Educational Codeforces Round 95 (Rated for Div. 2)C. Mortal Kombat Tower(状态机dp)
- Android压缩Apk
- 作文第一次用计算机350,第一次做饭作文350字作文字
- 阿里云将在2018云栖大会·重庆峰会上推出重磅物联网平台