內(nèi)存溢出是什么意思
在論壇上很多朋友在討論關(guān)于內(nèi)存溢出一系列問題。對于這個(gè)故障現(xiàn)象,到底是什么意思呢?下面學(xué)習(xí)啦小編就為大家介紹一下具體的解決方法吧,歡迎大家參考和學(xué)習(xí)。
具體的故障現(xiàn)象及解決方法:
內(nèi)存溢出是什么意思?
內(nèi)存溢出通俗解釋:
通俗理解就是內(nèi)存不夠,通常在運(yùn)行大型軟件或游戲時(shí),軟件或游戲所需要的內(nèi)存遠(yuǎn)遠(yuǎn)超出了你主機(jī)內(nèi)安裝的內(nèi)存所承受大小,就叫內(nèi)存溢出。此時(shí)軟件或游戲就運(yùn)行不了,系統(tǒng)會提示內(nèi)存溢出,有時(shí)候會自動關(guān)閉軟件,重啟電腦或者軟件后釋放掉一部分內(nèi)存又可以正常運(yùn)行該軟件或游戲一段時(shí)間。
內(nèi)存溢出基本含義:
內(nèi)存溢出已經(jīng)是軟件開發(fā)歷史上存在了近40年的“老大難”問題,像在“紅色代碼”病毒事件中表現(xiàn)的那樣,它已經(jīng)成為黑客攻擊企業(yè)網(wǎng)絡(luò)的“罪魁禍?zhǔn)?rdquo;。 如在一個(gè)域中輸入的數(shù)據(jù)超過了它的要求就會引發(fā)數(shù)據(jù)溢出問題,多余的數(shù)據(jù)就可以作為指令在計(jì)算機(jī)上運(yùn)行。據(jù)有關(guān)安全小組稱,操作系統(tǒng)中超過50%的安全漏洞都是由內(nèi)存溢出引起的,其中大多數(shù)與微軟的技術(shù)有關(guān)
內(nèi)存溢出基本內(nèi)容:
為了便于理解,我們不妨打個(gè)比方。緩沖區(qū)溢出好比是將十磅的糖放進(jìn)一個(gè)只能裝五磅的容器里。一旦該容器放滿了,余下的部分就溢出在柜臺和地板上,弄得一團(tuán)糟。由于計(jì)算機(jī)程序的編寫者寫了一些編碼,但是這些編碼沒有對目的區(qū)域或緩沖區(qū)——五磅的容器——做適當(dāng)?shù)臋z查,看它們是否夠大,能否完全裝入新的內(nèi)容——十磅的糖,結(jié)果可能造成緩沖區(qū)溢出的產(chǎn)生。
如果打算被放進(jìn)新地方的數(shù)據(jù)不適合,溢得到處都是,該數(shù)據(jù)也會制造很多麻煩。但是,如果緩沖區(qū)僅僅溢出,這只是一個(gè)問題。到此時(shí)為止,它還沒有破壞性。當(dāng)糖溢出時(shí),柜臺被蓋住。可以把糖擦掉或用吸塵器吸走,還柜臺本來面貌。與之相對的是,當(dāng)緩沖區(qū)溢出時(shí),過剩的信息覆蓋的是計(jì)算機(jī)內(nèi)存中以前的內(nèi)容。除非這些被覆蓋的內(nèi)容被保存或能夠恢復(fù),否則就會永遠(yuǎn)丟失。
在丟失的信息里有能夠被程序調(diào)用的子程序的列表信息,直到緩沖區(qū)溢出發(fā)生。另外,給那些子程序的信息——參數(shù)——也丟失了。這意味著程序不能得到足夠的信息從子程序返回,以完成它的任務(wù)。就像一個(gè)人步行穿過沙漠。如果他依賴于他的足跡走回頭路,當(dāng)沙暴來襲抹去了這些痕跡時(shí),他將迷失在沙漠中。這個(gè)問題比程序僅僅迷失方向嚴(yán)重多了。入侵者用精心編寫的入侵代碼(一種惡意程序)使緩沖區(qū)溢出,然后告訴程序依據(jù)預(yù)設(shè)的方法處理緩沖區(qū),并且執(zhí)行。此時(shí)的程序已經(jīng)完全被入侵者操縱了。
入侵者經(jīng)常改編現(xiàn)有的應(yīng)用程序運(yùn)行不同的程序。例如,一個(gè)入侵者能啟動一個(gè)新的程序,發(fā)送秘密文件(支票本記錄,口令文件,或財(cái)產(chǎn)清單)給入侵者的電子郵件。這就好像不僅僅是沙暴吹了腳印,而且后來者也會踩出新的腳印,將我們的迷路者領(lǐng)向不同的地方,他自己一無所知的地方。