最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ī)制的評論 (共 條)

分享到微博請遵守國家法律
光泽县| 从江县| 灵宝市| 商丘市| 汽车| 屏南县| 阿拉尔市| 拉萨市| 永州市| 丹棱县| 察哈| 乐业县| 札达县| 江西省| 桦川县| 平罗县| 观塘区| 邵武市| 盘山县| 南投县| 邛崃市| 长兴县| 汾西县| 资中县| 福州市| 务川| 涟源市| 黄陵县| 罗源县| 吐鲁番市| 凤凰县| 荔浦县| 娄烦县| 双桥区| 房产| 光山县| 秭归县| 青龙| 沂源县| 筠连县| 甘孜|