• <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://www.shnenglu.com/Ipedo/archive/2005/10/27/867.aspx

            posted on 2008-11-02 10:50 Sandy 閱讀(376) 評論(0)  編輯 收藏 引用 所屬分類: windows學(xué)習(xí)
            精品久久久久久99人妻| 久久久久久久久久久久中文字幕| 99久久精品国内| 久久99精品国产| 久久这里有精品视频| 久久久www免费人成精品| 久久久久久a亚洲欧洲aⅴ| 久久久久久国产精品无码下载| 无码任你躁久久久久久老妇App| 色妞色综合久久夜夜| 久久久久久无码国产精品中文字幕| 久久综合亚洲色HEZYO社区| 狠色狠色狠狠色综合久久| 一本一道久久a久久精品综合| 久久99精品久久久久婷婷| 亚洲欧美成人久久综合中文网| 久久男人Av资源网站无码软件 | 99久久精品无码一区二区毛片 | 久久青青国产| 国内精品九九久久久精品| 久久这里只有精品视频99| 午夜不卡888久久| 久久亚洲春色中文字幕久久久| 久久婷婷五月综合成人D啪| 97超级碰碰碰久久久久| 亚洲中文字幕无码久久综合网 | 99久久国语露脸精品国产| 久久精品国产男包| 性欧美大战久久久久久久| 久久精品国产一区二区| 久久精品成人免费看| 久久久噜噜噜www成人网| 精品久久久久久国产| 欧美久久久久久| 久久久久99这里有精品10 | 狠狠狠色丁香婷婷综合久久五月| 无码人妻少妇久久中文字幕蜜桃 | 久久99国产乱子伦精品免费| 亚洲精品乱码久久久久久自慰| 国内精品久久久久久久久电影网| 久久亚洲AV无码精品色午夜|