国产精品天干天干,亚洲毛片在线,日韩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ī)制的評論 (共 條)

分享到微博請遵守國家法律
来宾市| 得荣县| 凤凰县| 宾阳县| 革吉县| 轮台县| 娱乐| 玛沁县| 北海市| 神农架林区| 张家港市| 临泽县| 岫岩| 凌源市| 博野县| 文成县| 东辽县| 巢湖市| 互助| 达日县| 揭东县| 顺平县| 铜山县| 从江县| 新绛县| 广平县| 喀喇| 淳安县| 永嘉县| 昌乐县| 孟村| 肃南| 济阳县| 临沧市| 资源县| 玛纳斯县| 凌海市| 和林格尔县| 横山县| 沂南县| 思南县|