国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

關(guān)于Qt/C++內(nèi)存管理機(jī)制

2020-01-08 00:50 作者:速凍冰糖  | 我要投稿

C++內(nèi)存管理相較于有自動垃圾回收系統(tǒng)(GCC)的語言相對需要注意的細(xì)節(jié)更多。本文謹(jǐn)記錄Qt學(xué)習(xí)中遇到關(guān)于內(nèi)存管理的雜項(xiàng),以更加清楚的認(rèn)識Qt/C++的內(nèi)存管理,也作未來的參考和學(xué)習(xí)過程中加深印象之用。

Qt中對象主要分為兩類,QObject或其派生類對象,普通C++類對象

后者內(nèi)存分配同C++原則。

前者通常有一個parent父對象指針。此非指針非Null時(shí)可將本對象加入父對象樹中。此時(shí)父對象被析構(gòu)時(shí)所有子對象也將自動析構(gòu)。Null時(shí) 代表此對象無父對象,即Qt將無法自動析構(gòu)此對象。


在局部作用域,如函數(shù)內(nèi)部創(chuàng)建的對象如未顯示調(diào)用new將在stack上分配內(nèi)存,而在全局范圍聲明的對象將在heap上分配內(nèi)存,因?yàn)镼t的parent特性,即使在heap上分配內(nèi)存也無需擔(dān)心內(nèi)存泄漏??偟膩碚f,關(guān)于是在堆上還是在棧上創(chuàng)建對象,依賴于這個對象所需要的生命周期,與其它無關(guān)。

?

需要注意的細(xì)節(jié);

1、對象只需要在局部作用域(stack)存在時(shí)可以選擇不進(jìn)行內(nèi)存分配,利用局部作用域變量的生命周期自動清理資源。

2、對于在局部作用域上創(chuàng)建的父對象及其子對象,要注意對象銷毀的順序,因?yàn)楦笇ο箐N毀時(shí)也會銷毀子對象,當(dāng)子對象會在父對象之后被銷毀時(shí)會引發(fā)二次析構(gòu)。

3、以往編碼時(shí)常省略new QWidget對象時(shí)的參數(shù)如(this),這樣將導(dǎo)致子對象的父對象被設(shè)置為Null,導(dǎo)致父對象析構(gòu)時(shí)子對象未能自動析構(gòu),這樣會出現(xiàn)程序運(yùn)行時(shí)的內(nèi)存泄漏。


關(guān)于Qt/C++內(nèi)存管理機(jī)制的評論 (共 條)

分享到微博請遵守國家法律
普安县| 桃源县| 石门县| 阜南县| 苗栗市| 宁明县| 石家庄市| 高台县| 平顺县| 彭州市| 宜阳县| 阿坝| 屯门区| 陇南市| 黄冈市| 基隆市| 永和县| 龙州县| 吉木萨尔县| 蒲城县| 鄂伦春自治旗| 昌宁县| 牡丹江市| 资中县| 大石桥市| 西畴县| 若尔盖县| 鸡泽县| 丰原市| 星子县| 永福县| 隆回县| 海晏县| 双峰县| 铜梁县| 贵定县| 乌兰县| 南雄市| 兴城市| 阳曲县| 南宫市|