免费看欧美黑人毛片-免费看毛片网站-免费看毛片的网站-免费看久久-中文字幕日韩欧美-中文字幕日韩精品一区

您現(xiàn)在的位置:首頁 > IT認證 > 軟件水平 >

軟考程序員輔導:C++內(nèi)存泄漏的解決辦法


發(fā)現(xiàn)大家對寫庫很熱衷。不過,寫一個庫,用C++最麻煩的事情,就是你new完了要記著delete。不過,這么傻瓜化的操作,有沒有辦法讓電腦自動完成呢?當然是可以的。思路有以下三點:

  1、Parent對象。

  每一個對象,都要有唯一的parent,當parent析構(gòu)時,要帶動他所有的children析構(gòu)。

  好處:

  實現(xiàn)簡單,且具有邏輯性。

  比如:一個窗口,他的按鍵,就應該是這個窗口的children,當窗口析構(gòu)的時候,按鍵也必須析構(gòu)。

  壞處:

  不可以有復制構(gòu)造函數(shù)……

  這個也很好理解。A-->B-->C中,a是b的parent,b是c的parent,如果允許復制,B復制了個D,那C就有兩個parent,究竟怎么析構(gòu)呢?

  開源庫的實現(xiàn):

  Qt實現(xiàn)了這種方式的內(nèi)存管理,尤其是對GUI框架,十分適用。

  2、引用計數(shù)的SharedPtr

  指針,進行復制操作的時候,引用計數(shù)+1,析構(gòu)的時候引用計數(shù)-1,當引用計數(shù)為0的時候,釋放空間。

  好處:

  實現(xiàn)簡單

  壞處:

  具有循環(huán)引用的情況。要引入WeakPtr

  開源庫的實現(xiàn):

  Qt同時實現(xiàn)了這種技術(shù),Boost也有相關實現(xiàn)。

  我因為最近想自己實現(xiàn)一套Signalandslot庫,也實現(xiàn)了SharedPtr,開源。

  地址:/raylib/raylib/blobs/master/SmartPtr.hpp

  評述:

  這是C++中最通用的實現(xiàn)手段,如果你要做一套類庫,嘗試使用SharedPtr,會讓事情變得更加簡單。

  3、重載new,實現(xiàn)GC

  直接重載C++操作符,實現(xiàn)垃圾回收。初始化一個內(nèi)存池,當內(nèi)存池滿的時候,進行垃圾回收操作。

  好處:

  一勞永逸

  壞處:

  實現(xiàn)困難。

  占用內(nèi)存大。

  對已有的環(huán)境,不一定會有很好的支持。

  開源庫的實現(xiàn):

  python和java都有垃圾回收的實現(xiàn),可以進行參考。

  評述:

  內(nèi)存池也許不一定要做垃圾回收,如果是靜態(tài)的內(nèi)存池,可以加速內(nèi)存分配的過程。

相關文章

無相關信息
更新時間2022-09-16 10:03:35【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網(wǎng)站糾錯二維碼手機版

客服電話:4008816886
付款方式   |   給我留言   |   我要糾錯   |   聯(lián)系我們




主站蜘蛛池模板: 极品美女在线| 电影《divinotesoro》| 装饰色彩| 在线观看xxxx| be小说| 大秦帝国第一部免费版| 梦断楼兰电影| 87电影| 星武神诀| 欧美最猛黑人xxxⅹ猛男视频| 金枝玉叶电视剧免费观看| 十个世界尽头| 地铁电影| 龚婉怡| 王者图片| high heels| 我要逃亡1988国语版免费观看| 影子是我的好朋友仿句怎么写| 脚心视频| 大尺度激情戏片段| 电影喜剧明星演员表| 赖小子电影| 胸肌图片| 为奴12年| 瓯江潮涨潮落时间表| 特黄特黄a级毛片免费专区| ftv girls| 醒来的女人电影免费观看全集高清| 三太太电影| 日韩在线日韩| 列兵大学生| 汪汪队完整版全集免费| 自拍电影网| 蜡笔小新日语| 美女亲热视频| 少妇灌肠调教日本视频| 来自地狱| 漂亮孕妇突然肚子疼视频| 黄网站在线免费| 三年片电影| 神经内科出科小结|