• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 58,  comments - 75,  trackbacks - 0
                new出來的空間如果沒有主動銷毀,在程序退出時仍可能有內存的泄露。
            操作系統描述到,在進程退出時會銷毀它所使用的所有內存空間,但這只是
            一個模型上的構想和描述。在實際的操作系統的實現上并不能做到這一點。
            因為,要實現在進程退出時銷毀它所使用的內存空間,就要給每個被使用的
            內存空間打一個標,表示這段內存空間被那個進程使用。在這種情況下,如
            果有多個使用小內存量的進程,并且被頻繁的創建和銷毀,那么光記住那些
            進程標致就要占用很大的內存空間,這是一個很不劃算的方案。所以在實際
            中,操作系統并沒有給每個進程使用的內存空間打標。這樣,有些小內存是
            沒有被回收的,如果多次開關這個程序就會發現,有內存被大量的占用,而
            不能被釋放。
                所以那些在程序中只有一個實例,并且是被new出來的對象,也應該主動
            的去手動銷毀,而不能依賴程序退出時由系統銷毀。

                被new出來的對象其銷毀是兩個步驟。
                1 析構對象。條用對象的析構函數,將對象占用的資源釋放掉。
                2 釋放內存。將對象所占用的內存釋放掉。
                
                如果new出來的對象沒有被銷毀,會造成連個層面上的泄露。
                1 對象泄露。他會造成背對象占用的資源也沒有銷毀或釋放。比如在對象
            中占有文件的句柄,在析構時才釋放。如果對象泄露了,這個句柄是不會被釋
            放的。那個文件會一直被占用。如果文件打開時是獨占的,那么及時對象所在
            的程序退出了,別的程序也別想訪問這個文件。
                2 內存泄露。所占用的內存不能被釋放。

            posted on 2007-05-31 10:50 walkspeed 閱讀(2717) 評論(5)  編輯 收藏 引用 所屬分類: C++語言

            FeedBack:
            # re: 內存泄露和對象泄露
            2007-05-31 17:58 | Steven
            內存在進程結束時是會被釋放的
            至少windows是這樣的。
            幾乎所有的內存都是從heap上分配的,雖然每個進程可以有多個heap
            但不會太多的,系統在進程結束的時候釋放所有的heap,自然從heap上
            分配的內存也被釋放掉了。
            當然依賴進程結束來釋放內存依然是危險的,因為系統只負責釋放內存
            而不管調用析構函數,如果析構函數中有什么操作的話是不會被執行的。
            不過windows上還好了,進程結束的時候所有進程相關的內核對象和GDI對象
            包括文件,mutex, dc等都會被釋放掉。

            對于某些其他操作系統來說,尤其是嵌入式系統,比較麻煩些。
            比如Symbian OS,進程結束后某些資源不會被釋放,尤其是發生異常退出的時候。  回復  更多評論
              
            # re: 內存泄露和對象泄露
            2007-06-01 09:20 | walkspeed
            你可以做個小實驗。
            寫一個程序,只是new個幾十K的內存。

            將這個程序開關,開關幾十次,你就會發現內存的后用會增加。如果再多,windows是會掛的。  回復  更多評論
              
            # re: 內存泄露和對象泄露
            2007-06-01 16:39 | myy
            我同意 1 樓的說法.

            樓上的小實驗并不能說明問題,就算是正常的程序,內存也會增加,我猜這是操作系統內部的原因,比如緩存文件映像什么的。  回復  更多評論
              
            # re: 內存泄露和對象泄露
            2007-06-01 18:07 | wqp
            #1樓說的是對的,現代操作系統都采用虛擬內存來管理物理內存,每個進程擁有的只是線性地址,用來記錄線性地址到物理地址轉換的頁表為每個進程所有,進程退出時,操作系統會釋放所有該頁表對應的物理內存頁。因此,此處不需要擔心內存泄漏的問題。而對于服務器程序,由于長時間運行,需要特別注意內存泄漏;還有就是嵌入式OS,通常都是在實模式運行的,也有泄漏的風險。  回復  更多評論
              
            # re: 內存泄露和對象泄露
            2007-06-04 14:21 | 看圖軟件
            內存泄露。所占用的內存不能被釋放,怎么辦  回復  更多評論
              

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(4)

            隨筆分類(64)

            隨筆檔案(58)

            文章分類(3)

            文章檔案(3)

            相冊

            收藏夾(9)

            C++零碎

            好友

            搜索

            •  

            積分與排名

            • 積分 - 161397
            • 排名 - 163

            最新評論

            閱讀排行榜

            評論排行榜

            国产精品9999久久久久| 精品国产91久久久久久久a| 日日狠狠久久偷偷色综合免费| 99久久免费只有精品国产| 精品熟女少妇a∨免费久久| 久久水蜜桃亚洲av无码精品麻豆 | 老司机午夜网站国内精品久久久久久久久| 亚洲精品国产成人99久久| 2021国产精品午夜久久| 天天爽天天爽天天片a久久网| 亚洲精品tv久久久久久久久久| 国产精品无码久久久久久| 久久久久99精品成人片牛牛影视 | 99久久国产综合精品网成人影院 | 国产精品毛片久久久久久久| 亚洲精品NV久久久久久久久久| 久久精品亚洲精品国产色婷| 久久久久久国产a免费观看黄色大片| 亚洲中文精品久久久久久不卡| 久久99亚洲综合精品首页| 77777亚洲午夜久久多喷| 婷婷久久综合| 久久久久无码国产精品不卡| AA级片免费看视频久久| 国产精品久久久天天影视| 亚洲国产视频久久| 久久久99精品成人片中文字幕| 久久91精品国产91久久户| 亚洲成色WWW久久网站| 精品多毛少妇人妻AV免费久久| 久久丝袜精品中文字幕| 久久影院午夜理论片无码 | 亚洲精品tv久久久久| 久久久久久噜噜精品免费直播 | 精品久久久久久无码不卡| 久久天天躁狠狠躁夜夜av浪潮| 国内精品欧美久久精品| 久久久久久A亚洲欧洲AV冫| 中文成人无码精品久久久不卡| 亚洲欧洲精品成人久久奇米网| 久久婷婷色综合一区二区|