国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種內(nèi)存管理方法及系統(tǒng)的制作方法

      文檔序號:9432364閱讀:706來源:國知局
      一種內(nèi)存管理方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及一種計(jì)算機(jī)技術(shù),特別是涉及一種內(nèi)存管理方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]內(nèi)存越界是我們軟件開發(fā)中經(jīng)常遇到的一個問題。何謂內(nèi)存訪問越界,簡單的說,你向系統(tǒng)申請了一塊內(nèi)存,在使用這塊內(nèi)存的時候,超出了你申請的范圍。內(nèi)存越界通??赡軙斐扇缦潞蠊?1,破壞堆中的內(nèi)存分配信息數(shù)據(jù),特別是動態(tài)分配的內(nèi)存塊的內(nèi)存信息數(shù)據(jù)。2,破壞程序自己的其他對象的內(nèi)存空間,這種破壞會影響程序執(zhí)行的不正確性,當(dāng)然也會誘發(fā)coredump,如破壞了指針數(shù)據(jù)。3,破壞了空閑內(nèi)存塊,很幸運(yùn),這樣不會產(chǎn)生什么問題,但誰知道什么時候不幸會降臨呢?所以有效的檢測和快速的定位內(nèi)存越界的機(jī)制就十分重要。另外對于無屏的嵌入式設(shè)備(如路由器,交換機(jī)等)由于沒有屏幕顯示錯誤,只有當(dāng)調(diào)試人員連接串口或者telnet查看的時候才能看到設(shè)備的信息?,F(xiàn)有的內(nèi)存越界檢測方案只描述了如何檢測內(nèi)存的上溢(上越界)和下溢(下越界),卻并沒有內(nèi)存越界的定位方法和錯誤信息的記錄機(jī)制,現(xiàn)有的簡單檢測方案在嵌入式設(shè)備上并不能解決內(nèi)存越界的定位問題。
      [0003]鑒于此,如何找到一種能夠檢測和定位內(nèi)存越界問題的內(nèi)存管理方案就成為了本領(lǐng)域技術(shù)人員亟待解決的問題。

      【發(fā)明內(nèi)容】

      [0004]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種內(nèi)存管理方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中難以檢測和定位內(nèi)存越界的問題。
      [0005]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種內(nèi)存管理方法,所述內(nèi)存管理方法包括:進(jìn)行內(nèi)存分配時,實(shí)際分配的內(nèi)存包括頭信息、需要分配的內(nèi)存空間大小以及尾信息,所述頭信息和尾信息中包括用于檢測內(nèi)存越界的信息,同時建立所分配內(nèi)存的管理結(jié)構(gòu)體,所述管理結(jié)構(gòu)體中包括所分配內(nèi)存的函數(shù)調(diào)用信息以及內(nèi)存分配信息;進(jìn)行內(nèi)存釋放時,根據(jù)所述內(nèi)存的頭信息和尾信息進(jìn)行內(nèi)存越界檢測,當(dāng)檢測到發(fā)生內(nèi)存越界時,保存所述內(nèi)存的管理結(jié)構(gòu)體,釋放所述內(nèi)存。
      [0006]可選地,所述內(nèi)存管理方法包括:進(jìn)行內(nèi)存釋放時,根據(jù)所述內(nèi)存的頭信息和尾信息進(jìn)行內(nèi)存越界檢測,當(dāng)檢測到未發(fā)生內(nèi)存越界時,釋放所述內(nèi)存的管理結(jié)構(gòu)體,釋放所述內(nèi)存。
      [0007]可選地,所述頭信息進(jìn)行4字節(jié)對齊,包括三個4字節(jié),第一個4字節(jié)存放內(nèi)存標(biāo)志信息,第二個4字節(jié)包括需要分配的內(nèi)存空間大小,第三個4字節(jié)通過設(shè)定算法對所述內(nèi)存空間大小計(jì)算得出;所述尾信息包括一個4字節(jié)數(shù)據(jù),所述4字節(jié)存放的數(shù)據(jù)與頭信息的第三個4字節(jié)內(nèi)容相同。
      [0008]可選地,所述內(nèi)存越界檢測的具體實(shí)現(xiàn)包括:通過所述設(shè)定算法對頭信息的第二個4字節(jié)的數(shù)據(jù)計(jì)算得到的一個計(jì)算結(jié)果,將所述計(jì)算結(jié)果與所述頭信息的第三個4字節(jié)數(shù)據(jù)進(jìn)行比較,如果不一致,則發(fā)生內(nèi)存下越界;將所述計(jì)算結(jié)果與所述尾信息的所述4字節(jié)數(shù)據(jù)進(jìn)行比較,如果不一致,則發(fā)生內(nèi)存上越界;當(dāng)內(nèi)存上越界與內(nèi)存下越界都未發(fā)生時,表明未檢測到發(fā)生內(nèi)存越界,否則,表明檢測到發(fā)生內(nèi)存越界。
      [0009]可選地,所述內(nèi)存管理方法還包括:通過管理鏈表管理所述管理結(jié)構(gòu)體,通過內(nèi)存溢出鏈表保存發(fā)生內(nèi)存越界的內(nèi)存管理結(jié)構(gòu)體。
      [0010]可選地,所述內(nèi)存管理方法還包括:在同一個共享庫中實(shí)現(xiàn)所述內(nèi)存分配和內(nèi)存釋放。
      [0011]可選地,所述內(nèi)存管理方法還包括:遍歷所述內(nèi)存溢出鏈表,輸出所述內(nèi)存溢出鏈表中的所有內(nèi)存管理結(jié)構(gòu)體的信息。
      [0012]本發(fā)明提供一種內(nèi)存管理系統(tǒng),所述內(nèi)存管理系統(tǒng)包括:內(nèi)存分配模塊,用于內(nèi)存分配以及建立所分配內(nèi)存的管理結(jié)構(gòu)體,所述管理結(jié)構(gòu)體中包括所分配內(nèi)存的函數(shù)調(diào)用信息以及內(nèi)存分配信息,將所述管理結(jié)構(gòu)體加入到管理鏈表中;實(shí)際分配的內(nèi)存包括頭信息、需要分配的內(nèi)存空間大小以及尾信息,所述頭信息和尾信息中包括用于檢測內(nèi)存越界的信息;內(nèi)存釋放模塊,用于內(nèi)存釋放以及越界管理,根據(jù)所述內(nèi)存的頭信息和尾信息進(jìn)行內(nèi)存越界檢測,當(dāng)檢測到發(fā)生內(nèi)存越界時,將所述內(nèi)存對應(yīng)的管理結(jié)構(gòu)體從所述管理鏈表中移除,并將所述內(nèi)存對應(yīng)的管理結(jié)構(gòu)體加入到內(nèi)存溢出鏈表中,釋放所述內(nèi)存。
      [0013]可選地,所述內(nèi)存釋放模塊還用于:根據(jù)所述內(nèi)存的頭信息和尾信息進(jìn)行內(nèi)存越界檢測,當(dāng)檢測到未發(fā)生內(nèi)存越界時,將所述內(nèi)存對應(yīng)的管理結(jié)構(gòu)體從所述管理鏈表中移除并釋放所述管理結(jié)構(gòu)體,釋放所述內(nèi)存。
      [0014]可選地,所述內(nèi)存溢出鏈表節(jié)點(diǎn)數(shù)目設(shè)有上限,當(dāng)所述內(nèi)存溢出鏈表的節(jié)點(diǎn)數(shù)目達(dá)到上限后,對所述內(nèi)存溢出鏈表進(jìn)行先入先出管理。
      [0015]可選地,所述內(nèi)存分配模塊以及內(nèi)存釋放模塊在同一個共享庫中實(shí)現(xiàn)。
      [0016]可選地,所述頭信息進(jìn)行4字節(jié)對齊,包括三個4字節(jié),第一個4字節(jié)存放內(nèi)存標(biāo)志信息,第二個4字節(jié)包括需要分配的內(nèi)存空間大小,第三個4字節(jié)通過設(shè)定算法對所述內(nèi)存空間大小計(jì)算得出;所述尾信息包括一個4字節(jié)數(shù)據(jù),所述4字節(jié)存放的數(shù)據(jù)與頭信息的第三個4字節(jié)內(nèi)容相同。
      [0017]可選地,所述內(nèi)存越界檢測的具體實(shí)現(xiàn)包括:通過所述設(shè)定算法對頭信息的第二個4字節(jié)的數(shù)據(jù)計(jì)算得到的一個計(jì)算結(jié)果,將所述計(jì)算結(jié)果與所述頭信息的第三個4字節(jié)數(shù)據(jù)進(jìn)行比較,如果不一致,則發(fā)生內(nèi)存下越界;將所述計(jì)算結(jié)果與所述尾信息的所述4字節(jié)數(shù)據(jù)進(jìn)行比較,如果不一致,則發(fā)生內(nèi)存上越界;當(dāng)內(nèi)存上越界與內(nèi)存下越界都未發(fā)生時,表明未檢測到發(fā)生內(nèi)存越界,否則,表明檢測到發(fā)生內(nèi)存越界。
      [0018]可選地,所述內(nèi)存分配信息包括所分配內(nèi)存的起始地址、內(nèi)存大小。
      [0019]可選地,所述內(nèi)存管理系統(tǒng)還包括內(nèi)存越界信息輸出模塊,用于遍歷所述內(nèi)存溢出鏈表,輸出所述內(nèi)存溢出鏈表中的所有內(nèi)存管理結(jié)構(gòu)體的信息。
      [0020]如上所述,本發(fā)明的一種內(nèi)存管理方法及系統(tǒng),具有以下有益效果:集內(nèi)存越界的檢測、定位和記錄為一體,能快速的檢測定位內(nèi)存越界問題,并且將問題進(jìn)行記錄,方便開發(fā)人員的調(diào)試。同時由于通過共享庫的方式完成本發(fā)明的方案,所以可以讓鏈接了共享庫的進(jìn)程在其各自的內(nèi)存空間內(nèi)維護(hù)著本進(jìn)程的內(nèi)存溢出鏈表,即可以針對某一個進(jìn)程單獨(dú)調(diào)試,而不需要打印出所有進(jìn)程的內(nèi)存溢出信息。另外使用共享庫的另一個優(yōu)點(diǎn)在于可以簡單的通過在共享庫中的宏來打開和關(guān)閉所有進(jìn)程的內(nèi)存管理功能,因?yàn)樯鲜鰞?nèi)存管理功能都屬于調(diào)試信息,往往只在開發(fā)版本中加入,而在發(fā)布版本中需要去除所有的調(diào)試信息。
      【附圖說明】
      [0021]圖1顯示為本發(fā)明的內(nèi)存管理方法的一實(shí)施例的流程示意圖。
      [0022]圖2顯示為本發(fā)明的內(nèi)存管理方法的一實(shí)施例的分配流程示意圖。
      [0023]圖3顯示為本發(fā)明的內(nèi)存管理方法的一實(shí)施例的釋放流程示意圖。
      [0024]圖4顯示為本發(fā)明的內(nèi)存管理方法的一實(shí)施例的內(nèi)存溢出鏈表管理流程示意圖。
      [0025]圖5顯示為本發(fā)明的內(nèi)存管理系統(tǒng)的一實(shí)施例的模塊示意圖。
      [0026]元件標(biāo)號說明
      [0027]I內(nèi)存管理系統(tǒng)
      [0028]11內(nèi)存分配模塊
      [0029]12內(nèi)存釋放模塊
      [0030]SI ?S2 步驟
      【具體實(shí)施方式】
      [0031]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
      [0032]需要說明的是,本實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
      [0033]本發(fā)明提供一種內(nèi)存管理方法。在一個實(shí)施例中,如圖1所示,所述內(nèi)存管理方法包括:
      [0034]步驟SI,進(jìn)行內(nèi)存分配時,實(shí)際分配的內(nèi)存包括頭信息、
      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1