• <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 - 149,comments - 125,trackbacks - 0
             

            什么是內(nèi)存泄露

            內(nèi)存泄露是一種實現(xiàn)錯誤。它將會慢慢耗盡系統(tǒng)內(nèi)存空間。當(dāng)計算機(jī)運(yùn)行進(jìn)程的時候,可能需要或多或少的內(nèi)存。這主要以來于進(jìn)程每時每刻將要執(zhí)行的命令。當(dāng)進(jìn)程需要更多的內(nèi)存時,將給操作系統(tǒng)提出請求。當(dāng)進(jìn)程不再需要內(nèi)存的時候,將會把內(nèi)存釋放掉,還給操作系統(tǒng)。這樣其他進(jìn)程才可以使用。如果進(jìn)程沒有正確的將內(nèi)存還給操作系統(tǒng),盡管它不再使用,但是內(nèi)存的狀態(tài)仍然是不可再分配。這將減少可用內(nèi)存。

            一般我們常說的內(nèi)存泄露是指堆內(nèi)存的泄露。堆內(nèi)存是指程序從堆中分配的,大小任意的(內(nèi)存塊的大小可以在程序運(yùn)行期決定),使用完后必須釋放的內(nèi)存。應(yīng)用程序一般使用mallocreallocnew等函數(shù)從堆中分配到一塊內(nèi)存,使用完后,程序必須負(fù)責(zé)相應(yīng)得調(diào)用freedelete釋放該內(nèi)存塊,否則,這塊內(nèi)存就不能再次被使用,我們就說這塊內(nèi)存泄露了。

            對于一些界面的資源,如window的創(chuàng)建,menu的創(chuàng)建,dc的創(chuàng)建等等,對于這些,我們需要在不使用它們的時候,調(diào)用相應(yīng)的函數(shù),進(jìn)行釋放。否則也將會造成內(nèi)存泄露。

            內(nèi)存泄露的后果

            內(nèi)存泄露會因為減少可用內(nèi)存的數(shù)量從而降低計算機(jī)的性能。最終,在最糟糕的情況下,過多的可用內(nèi)存被分配掉導(dǎo)致全部或部分設(shè)備停止正常工作,或者應(yīng)用程序崩潰。

            內(nèi)存泄露可能不嚴(yán)重,甚至能夠被常規(guī)的手段檢測出來。在現(xiàn)代操作系統(tǒng)中,一個應(yīng)用程序使用的常規(guī)內(nèi)存在程序終止時被釋放。這表示一個短暫的應(yīng)用程序中的內(nèi)存泄露不會導(dǎo)致嚴(yán)重后果。

            在以下情況下,內(nèi)存泄露導(dǎo)致較嚴(yán)重的后果:

                    一是程序運(yùn)行后置之不理,并且隨著時間的流失消耗越來越多的內(nèi)存(比如服務(wù)器上的后臺任務(wù),尤其是嵌入式系統(tǒng)中的后臺任務(wù),這些任務(wù)可能被運(yùn)行后很多年內(nèi)都置之不理);

                    二是新的內(nèi)存被頻繁的分配,比如當(dāng)現(xiàn)實電腦游戲或動畫視頻畫面時;

                    三是程序能夠請求未被釋放的內(nèi)存(比如共享內(nèi)存),甚至是程序終止的時候;

                    四是泄露在操作系統(tǒng)內(nèi)部發(fā)生;

                    五是泄露在系統(tǒng)關(guān)鍵驅(qū)動中發(fā)生;

                    六是內(nèi)存非常有限,比如在嵌入式系統(tǒng)或便攜設(shè)備中

                   七是當(dāng)運(yùn)行于一個終止時內(nèi)存并不自動釋放的操作系統(tǒng)治上,而且一旦丟失,只能通過重啟來恢復(fù)。

            在這里,我著重強(qiáng)調(diào)一下嵌入式系統(tǒng),由于系統(tǒng)內(nèi)存非常有限,編寫應(yīng)用程序的時候,一定要防止內(nèi)存泄露的發(fā)生。如果發(fā)生,可能是會使你編寫的應(yīng)用程序出現(xiàn)異常。或者你的系統(tǒng)的性能將會大大降低。甚至有時你不得不依靠重起系統(tǒng)來恢復(fù)。

            內(nèi)存泄露的檢測
            檢測內(nèi)存泄露的工具:debugnew
            http://dev.csdn.net/article/58/58407.shtm
            淺談內(nèi)存泄漏(二)
            http://www.vczx.com/article/show.php?id=68

            一個跨平臺的 C++ 內(nèi)存泄漏檢測器

            http://www-128.ibm.com/developerworks/cn/linux/l-mleak2/index.html
            內(nèi)存泄露檢測
            http://m.shnenglu.com/Ipedo/archive/2005/10/27/867.aspx

            posted on 2008-11-02 10:50 Sandy 閱讀(376) 評論(0)  編輯 收藏 引用 所屬分類: windows學(xué)習(xí)
            国产精品99久久不卡| 无码国产69精品久久久久网站| 久久久久国产一级毛片高清版| 亚洲国产成人久久精品影视| 久久九九久精品国产免费直播| 久久亚洲日韩看片无码| 久久影院综合精品| 亚洲精品国产成人99久久| 亚洲精品第一综合99久久| 天堂久久天堂AV色综合| 亚洲国产精品久久久久久| 亚洲综合久久夜AV | 69久久精品无码一区二区| 久久亚洲精品国产亚洲老地址 | 久久被窝电影亚洲爽爽爽| 久久久久国产一区二区| 亚洲精品无码专区久久久| 国产亚州精品女人久久久久久 | 欧美久久综合性欧美| 无码精品久久久天天影视| 久久综合一区二区无码| 精品久久久久久国产| 无码国内精品久久人妻| 奇米影视7777久久精品人人爽| 国产亚洲成人久久| 97超级碰碰碰碰久久久久| 久久国产精品久久精品国产| 久久亚洲AV成人无码电影| 亚洲精品午夜国产VA久久成人| 久久人人爽人人人人片av| 久久天天躁狠狠躁夜夜不卡| 94久久国产乱子伦精品免费| 久久97精品久久久久久久不卡| 久久久噜噜噜www成人网| 国产美女亚洲精品久久久综合| 中文字幕久久亚洲一区| 中文精品久久久久人妻| 亚洲精品无码久久久久去q| 99久久国产精品免费一区二区 | 91精品日韩人妻无码久久不卡| 7777精品伊人久久久大香线蕉|