亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

4 c++ delete this

2019-11-08 01:34:39
字體:
來源:轉載
供稿:網友

C++ delete this

問1:在類的成員函數中能不能調用delete this?

答:肯定的,能調用。

#include <iostream>#include <vector>using namespace std;class A{public: void f() { cout<<"delete this"<<endl; delete this; };};int main(){ { A a; }}

問2:假設這個成員函數名字叫release,而delete this在release方法中調用,那么這個對象在調用release方法后,還能進行其他操作,如調用該對象的其他方法么?

答:仍然是肯定 的,調用release之后還能調用其他的方法。

但是有個前提:被調用的方法不涉及這個對象的數據成員和虛函數。

根本原因在于delete的功能和類對象的內存模型。當一個類對象聲明時,系統會為其分配內存空間。在類對象的內存空間中,只有數據成員和虛函數表指針,并不包含代碼內容,類的成員函數單獨放在代碼段中。在調用成員函數時,隱含傳遞一個this指針,讓成員函數知道是哪個對象在調用它。當調用delete this時,類對象的內存空間被釋放。在delete this之后進行的其他任何函數調用,只要不涉及到this指針的內容,都能夠正常運行。一旦涉及到this指針,如操作數據成員,調用虛函數等,就會出現不可預期的問題。

問3:為什么是不可預期的問題?delete this之后不是釋放了類對象的內存空間了么,那么這段內存應該已經還給系統,不再屬于這個進程。照這個邏輯來看,應該發生指針錯誤,無訪問權限之類的令系統崩潰的問題才對?。?/strong>

答:這個問題牽涉到操作系統的內存管理策略。delete this釋放了類對象的內存空間,但是內存空間卻并不是馬上被回收到系統中,可能是緩沖或者其他原因,導致這段內存空間暫時沒有被系統收回。此時這段內存是可以訪問的,但是當你獲取數據成員,可能得到的是一串很長的隨機數;訪問虛函數表時,指針無效的可能性非常高,很可能造成系統崩潰。

程序崩潰示例代碼

#include <iostream>#include <vector>using namespace std;class A{public: int a; A(int t = 0) { a = t; } void f1() { //使用了該對象的數據成員 cout<<a<<endl; } void f2() { //未使用該對象的數據成員 cout<<1<<endl; } virtual void f3() { cout<<a<<endl; } void release() { cout<<"delete this"<<endl; delete this; };};int main(){ { A a(10); a.f1(); a.f2(); a.f3(); a.release(); a.f1(); a.f2(); a.f3(); }}

問4:如果在類的析構函數中調用delete this,會發生什么?

答:實驗告訴我們,會導致堆棧溢出。

delete的本質是將調用一個或多個析構函數,然后,釋放內存。顯然,delete this會去調用本對象的析構函數,而析構函數中又調用delete this,形成無限遞歸,造成堆棧溢出,系統崩潰。

#include <iostream>#include <vector>using namespace std;class A{public: ~ A() { cout<<"delete this"<<endl; delete this; };};int main(){ { A a; }}

總結

在成員函數中調用delete this,會導致指針錯誤;

在析構函數中調用delete this,會造成棧溢出;

this是類中成員函數具有的一個附加的隱含形參,即指向該類對象的一個指針,它與調用成員函數的對象綁定在一起;

this的值不可變;

class A{public: void f(A a) { //this = &a; //error: lvalue required as left Operand of assignment }};

?


請尊重作者的勞動,轉載請注明作者及原文地址(http://blog.csdn.net/lis_12/article/details/56049284).

如果覺得本文對您有幫助,請點擊‘頂’支持一下,您的支持是我寫作最大的動力,謝謝。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久久| 91在线精品视频| 亚洲福利在线播放| 日韩电影大全免费观看2023年上| 91免费看视频.| 日韩欧美aⅴ综合网站发布| 亚洲精品资源在线| 伊人精品在线观看| 91亚洲精品一区| 亚洲精品aⅴ中文字幕乱码| 欧美精品成人在线| 日韩精品视频观看| 久久全球大尺度高清视频| 亚洲精品av在线播放| 亚洲国产又黄又爽女人高潮的| 亚洲qvod图片区电影| 国产美女主播一区| 美女扒开尿口让男人操亚洲视频网站| 91经典在线视频| 日韩电视剧在线观看免费网站| 91麻豆国产语对白在线观看| 亚洲美女视频网站| 亚洲国内精品视频| 亚洲精品日韩激情在线电影| 欧美精品国产精品日韩精品| 久久精品色欧美aⅴ一区二区| 久久久精品视频成人| 一区二区在线视频播放| 日韩视频在线免费观看| 欧美超级乱淫片喷水| 欧美性猛交xxxx免费看漫画| 亚洲天堂av图片| 国产精品99蜜臀久久不卡二区| 亚洲激情在线观看视频免费| 亚洲欧美成人一区二区在线电影| 国产精品入口夜色视频大尺度| y97精品国产97久久久久久| 欧美精品日韩三级| 一区二区中文字幕| 亚洲自拍偷拍色片视频| 综合网中文字幕| 日韩精品在线观看网站| 欧美日韩精品在线播放| 欧美丝袜第一区| 国产亚洲福利一区| 亚洲国产精品美女| 亚洲美女自拍视频| 97在线观看视频| 在线播放亚洲激情| 国产精品一区二区三区免费视频| 久久在线视频在线| 久久99视频精品| 97热精品视频官网| 日韩av成人在线| 美女黄色丝袜一区| 亚洲精品视频久久| 日韩在线精品一区| 欧美精品生活片| 久久久久亚洲精品成人网小说| 欧美激情高清视频| 在线看福利67194| 国产精品久久久久久久久久99| 国产精品人成电影在线观看| 亚洲人成亚洲人成在线观看| 国产日韩欧美黄色| 欧美在线视频播放| 国产91露脸中文字幕在线| 亚洲国产欧美在线成人app| 精品国产一区二区三区在线观看| 亚洲精品97久久| 久久精品视频免费播放| 日韩一区二区三区国产| 精品久久久久久久久久国产| 欧美日韩免费区域视频在线观看| 久久久久这里只有精品| 久久久亚洲国产| 色噜噜狠狠狠综合曰曰曰88av| 久久精视频免费在线久久完整在线看| 26uuu国产精品视频| 91视频九色网站| 中日韩美女免费视频网址在线观看| 欧美成人精品在线播放| 九九热精品视频国产| 亚洲欧美日韩天堂| 福利微拍一区二区| 欧美性xxxxx极品娇小| 亚洲欧美日韩图片| 一本一本久久a久久精品牛牛影视| 成人a免费视频| 久久久这里只有精品视频| 国产91热爆ts人妖在线| 欧美精品久久久久久久免费观看| 亚洲第一精品电影| 国产亚洲欧洲高清| 精品高清一区二区三区| 欧美性猛交xxxx免费看久久久| 狠狠躁夜夜躁人人爽超碰91| 91精品综合久久久久久五月天| 日韩精品视频观看| 欧美日韩国产中文精品字幕自在自线| 欧美成人激情在线| 亚洲国产精品免费| 91精品视频专区| 亚洲综合在线小说| 国产精品18久久久久久首页狼| 久久久精品亚洲| 国产拍精品一二三| 成人中文字幕+乱码+中文字幕| 综合国产在线视频| 欧美极品少妇xxxxⅹ免费视频| 亚洲乱码国产乱码精品精天堂| 国产成人综合亚洲| 热re91久久精品国99热蜜臀| 日本久久久a级免费| 欧洲成人午夜免费大片| 性日韩欧美在线视频| 性欧美激情精品| 成人综合网网址| 亚洲成人黄色在线| 欧美在线激情视频| 久久国产精品影片| 亚洲欧美成人精品| 欧美精品在线免费播放| 麻豆乱码国产一区二区三区| 国产有码在线一区二区视频| 久久国产精品偷| 国产精品久久久久免费a∨| 久久国产精品久久久| 欧美精品福利视频| 91欧美视频网站| 久久天天躁狠狠躁夜夜躁2014| 91精品国产99久久久久久| 日韩精品中文字幕久久臀| 夜色77av精品影院| 欧美综合在线第二页| 成人精品久久av网站| 91亚洲精品一区| 欧美资源在线观看| 国产suv精品一区二区三区88区| 亚洲伊人久久大香线蕉av| 在线日韩日本国产亚洲| 欧美最猛性xxxxx免费| 国产日韩中文字幕在线| 夜夜嗨av色综合久久久综合网| 8090理伦午夜在线电影| 中文精品99久久国产香蕉| 国产精品av免费在线观看| 久久久久久久影院| 亚洲国产日韩欧美在线99| 8090成年在线看片午夜| 日韩欧美亚洲一二三区| 亚洲电影免费观看高清完整版在线观看| 久久天天躁狠狠躁夜夜躁| 91久久久久久久久| 欧美电影第一页| 亚洲区一区二区| 精品中文字幕乱| 青青a在线精品免费观看| 欧美有码在线视频| 日本精品一区二区三区在线播放视频| 欧美极品少妇xxxxx| 91色在线视频| 亚洲欧美日韩天堂| 国产大片精品免费永久看nba|