亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 010.txt

?? 會變語言實現(xiàn)的一些程序
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
 10.1 內(nèi) 存 管 理

10.1.1  內(nèi)存管理基礎(chǔ) 
Win32中的內(nèi)存管理是分層次的,系統(tǒng)提供了幾組層次不同的函數(shù)來管理內(nèi)存,它們是標準內(nèi)存管理函數(shù)、堆管理函數(shù)、虛擬內(nèi)存管理函數(shù)和內(nèi)存映射文件函數(shù)。所有的這些函數(shù)都是為了讓用戶能在比較高的層次上方便地管理內(nèi)存,以便將程序和底層的內(nèi)存分頁機制隔離開來。如圖10.1所示,這幾組函數(shù)的層次是各不相同的。



圖10.1  Windows的內(nèi)存分層管理

Windows使用一個以頁為基礎(chǔ)的虛擬內(nèi)存系統(tǒng),與分頁有關(guān)的概念已經(jīng)在第1章的1.3.2小節(jié)中有所介紹。Windows充分利用了80x86處理器保護模式下的線性尋址機制和分頁機制,這些機制是Win32內(nèi)存管理的基礎(chǔ),Win32提供了一組虛擬內(nèi)存管理函數(shù)來管理虛擬內(nèi)存,主要用于保留/提交/釋放虛擬內(nèi)存,在虛擬內(nèi)存頁上改變保護方式,鎖定虛擬內(nèi)存頁以及查詢一個進程的虛擬內(nèi)存等操作,這是一組位于底層的函數(shù)。

堆管理函數(shù)相對比較高級一點,堆的主要功能就是有效地管理內(nèi)存和進程的地址空間。DOS操作系統(tǒng)下的C語言中就已經(jīng)有了“堆”的概念,這時的“堆”是程序初始化時向操作系統(tǒng)申請并預留的大塊內(nèi)存,程序通過C函數(shù)在這塊空間中申請和釋放內(nèi)存。

在Win32中,進程可以使用的整個地址空間就是一個堆。并且“堆”的概念又被引伸了一步:Win32中分兩種堆,一種是進程的“默認堆”,默認堆只有一個,指的就是可以使用的整個地址空間;另一種是“動態(tài)堆”,也稱為“私有堆”,私有堆類似于DOS下C語言中使用的那種堆,一個進程可以隨意建立多個私有堆,也可以隨意將它們釋放,私有堆全部位于默認堆中,從概念上看,它和默認堆并沒有什么不同,就像一個跨國公司和屬下的子公司同樣都是按照公司的規(guī)程操作一樣。使用堆管理函數(shù)可以對所有的私有堆和默認堆進行操作。

標準內(nèi)存管理函數(shù)總是在默認堆中分配和釋放內(nèi)存,這組函數(shù)就是常規(guī)意義上的內(nèi)存管理函數(shù)。

內(nèi)存映射文件函數(shù)相對比較獨立,它是為了文件操作的方便性而設立的,當對文件進行操作的時候,一般總是先打開文件,然后申請一塊內(nèi)存用做緩沖區(qū),再將文件數(shù)據(jù)循環(huán)讀入并處理,當文件長度大于緩沖區(qū)長度的時候需要多次讀入,每次讀入后處理緩沖區(qū)邊界位置的數(shù)據(jù)往往是個麻煩的問題。曾經(jīng)介紹過Windows可以使用磁盤文件當做虛擬內(nèi)存(參考圖1.5,虛擬內(nèi)存的實現(xiàn)),內(nèi)存映射文件函數(shù)使用同樣的辦法將一個文件直接映射到進程的地址空間中,這樣可以通過內(nèi)存指針用讀寫內(nèi)存的辦法直接存取文件內(nèi)容。

對比這些函數(shù),可以發(fā)現(xiàn)它們涉及的系統(tǒng)資源是各不相同的,如表10.1所示。

表10.1  不同內(nèi)存管理函數(shù)的操作對象

內(nèi)存管理函數(shù)
 涉 及 方 面
 
標準內(nèi)存管理函數(shù)
 一個進程的默認堆
 
堆管理函數(shù)
 一個進程的虛擬地址空間、系統(tǒng)內(nèi)存、進程堆資源結(jié)構(gòu)
 
虛擬內(nèi)存管理函數(shù)
 一個進程的虛擬地址空間、系統(tǒng)頁文件、系統(tǒng)內(nèi)存、硬盤空間
 
內(nèi)存映射文件函數(shù)
 一個進程的虛擬地址空間、系統(tǒng)頁文件、系統(tǒng)內(nèi)存、硬盤空間、標準文件I/O
 

10.1.2  內(nèi)存的當前狀態(tài)

在第1章中已經(jīng)介紹過,一個進程可以尋址的地址空間是4 GB,但用戶可以直接管理的地址空間是多大呢?實際上,高端的2 GB是供操作系統(tǒng)內(nèi)核使用的,其中安排了操作系統(tǒng)的代碼和數(shù)據(jù)(Windows 9x中還包括共享內(nèi)存映射的地址空間),可供應用程序使用的地址空間是低端的2 GB,這2 GB除去應用程序與用戶DLL等的代碼和靜態(tài)數(shù)據(jù)段以后,余下來的才是內(nèi)存管理函數(shù)可以使用的地址空間,應用程序和用戶DLL的大小一般只有幾兆字節(jié)到上百兆字節(jié),所以可以認為能自由使用的地址空間基本上是2 GB。

既然用戶可以使用的地址空間大概為2 GB,讀者千萬不要認為就可以申請2 GB的內(nèi)存了,因為這2 GB僅是可以使用的“地址”空間,而不是可以使用的“內(nèi)存”空間,可分配內(nèi)存的大小還受制于物理內(nèi)存和磁盤交換文件的大小。因為物理內(nèi)存和磁盤交換文件是供整個系統(tǒng)和所有用戶程序使用的,所有系統(tǒng)內(nèi)核、當前執(zhí)行的所有用戶程序的代碼、數(shù)據(jù)以及分配的內(nèi)存總量并不能超過物理內(nèi)存和磁盤交換文件的總和。

當設計一個可能需要申請大量內(nèi)存的程序時,如何預先得知系統(tǒng)的配置情況呢?對此可以使用GlobalMemoryStatus函數(shù):

 

  invoke  GlobalMemoryStatus,lpBuffer

lpBuffer指向一個MEMORYSTATUS結(jié)構(gòu),結(jié)構(gòu)的定義如下:

MEMORYSTATUS STRUCT

  dwLength     DWORD   ? ;本結(jié)構(gòu)的長度

  dwMemoryLoad   DWORD   ? ;已用內(nèi)存的百分比

  dwTotalPhys DWORD   ? ;物理內(nèi)存總量

  dwAvailPhys DWORD   ? ;可用物理內(nèi)存

  dwTotalPageFile DWORD   ? ;交換文件總的大小

  dwAvailPageFile DWORD   ? ;交換文件中空閑部分大小

  dwTotalVirtual   DWORD   ? ;用戶可用的地址空間

  dwAvailVirtual   DWORD   ? ;當前空閑的地址空間

MEMORYSTATUS ENDS

在調(diào)用之前需要首先將dwLength字段設置為MEMORYSTATUS結(jié)構(gòu)的長度,當調(diào)用GlobalMemoryStatus函數(shù)后,函數(shù)會在結(jié)構(gòu)中返回對應的數(shù)值。注意:dwTotalPageFile字段返回的是交換文件的最大值,并不是當前實際建立的交換文件的大小,一般當前的交換文件大小會小于這個數(shù)值,但這個數(shù)值的大小也不是確定的,如果需要的話,系統(tǒng)會增加它的大小直到不再有空余的磁盤空間放置交換文件為止。

在所附光盤的Chapter10\MemInfo目錄中的MemInfo.asm文件利用這個功能定時獲取并顯示當前內(nèi)存的使用信息,源代碼如下:

    .386

    .model flat, stdcall

    option casemap :none

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; Include 文件定義

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include   windows.inc

include   user32.inc

includelib    user32.lib

include   kernel32.inc

includelib    kernel32.lib

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; Equ 等值定義

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

ICO_MAIN     equ   1000

DLG_MAIN     equ   100

IDC_INFO     equ     101

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 數(shù)據(jù)段

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

  .data?

hInstance dd    ?

hWinMain dd   ?

 

.const

szInfo db ~物理內(nèi)存總數(shù) %lu 字節(jié)~,0dh,0ah

db ~空閑物理內(nèi)存 %lu 字節(jié)~,0dh,0ah

db ~虛擬內(nèi)存總數(shù) %lu 字節(jié)~,0dh,0ah

db ~空閑虛擬內(nèi)存 %lu 字節(jié)~,0dh,0ah

db ~已用內(nèi)存比例 %d%%~,0dh,0ah

db   ~————————————————~,0dh,0ah

db ~用戶地址空間總數(shù) %lu 字節(jié)~,0dh,0ah

db ~用戶可用地址空間 %lu 字節(jié)~,0dh,0ah,0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 代碼段

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

    .code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_GetMemInfo   proc

    local @stMemInfo:MEMORYSTATUS

    local @szBuffer[1024]:byte

 

    mov   @stMemInfo.dwLength,sizeof @stMemInfo

    invoke  GlobalMemoryStatus,addr @stMemInfo

    invoke  wsprintf,addr @szBuffer,addr szInfo,\

    @stMemInfo.dwTotalPhys,@stMemInfo.dwAvailPhys,\

      @stMemInfo.dwTotalPageFile,\

    @stMemInfo.dwAvailPageFile,\

    @stMemInfo.dwMemoryLoad,\

    @stMemInfo.dwTotalVirtual,@stMemInfo.dwAvailVirtual

    invoke  SetDlgItemText,hWinMain,IDC_INFO,addr @szBuffer

    ret

 

_GetMemInfo   endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_ProcDlgMain     proc     uses ebx edi esi hWnd,wMsg,wParam,lParam

 

    mov   eax,wMsg

    .if   eax ==  WM_TIMER

      call     _GetMemInfo

    .elseif eax ==  WM_CLOSE

    invoke  KillTimer,hWnd,1

      invoke  EndDialog,hWnd,NULL

;********************************************************************

      .elseif eax ==  WM_INITDIALOG

    push     hWnd

    pop   hWinMain

    invoke  LoadIcon,hInstance,ICO_MAIN

    invoke  SendMessage,hWnd,WM_SETICON,ICON_BIG,eax

    invoke  SetTimer,hWnd,1,1000,NULL

    call     _GetMemInfo

;********************************************************************

    .else

    mov   eax,FALSE

    ret

    .endif

    mov   eax,TRUE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合欧美一区二区三区| 91麻豆精品国产综合久久久久久 | 久久99精品国产.久久久久久| 欧美日韩日本视频| 亚洲伊人色欲综合网| 欧美日韩在线三级| 青娱乐精品视频| 久久女同性恋中文字幕| 成人aaaa免费全部观看| 一区二区在线看| 在线播放中文一区| 久久福利视频一区二区| 国产精品网友自拍| 欧美亚洲动漫精品| 日本不卡视频一二三区| 久久久不卡网国产精品二区| 福利视频网站一区二区三区| 亚洲欧洲日韩av| 欧美剧情电影在线观看完整版免费励志电影| 午夜在线成人av| 久久伊人中文字幕| 91一区二区在线观看| 天使萌一区二区三区免费观看| 日韩欧美一区二区三区在线| 国产成人鲁色资源国产91色综| 国产精品久久久久三级| 欧美日韩色综合| 国产精品羞羞答答xxdd| 亚洲激情自拍偷拍| 精品国产91洋老外米糕| 91蜜桃网址入口| 美女国产一区二区三区| 日韩一区中文字幕| 欧美成人性战久久| 日本丰满少妇一区二区三区| 韩国精品久久久| 亚洲国产一区二区三区青草影视| 久久蜜臀中文字幕| 欧美午夜精品久久久| 成人一级视频在线观看| 五月激情综合色| 国产精品国产三级国产aⅴ中文 | 亚洲第一av色| 国产精品天天看| 91精品国产美女浴室洗澡无遮挡| 不卡一区二区中文字幕| 久久国产剧场电影| 亚洲午夜久久久久久久久电影院 | 日韩电影免费在线看| 国产精品欧美综合在线| 日韩欧美在线一区二区三区| 色偷偷一区二区三区| 国产麻豆成人传媒免费观看| 日本色综合中文字幕| 亚洲人成在线观看一区二区| 国产午夜精品久久久久久久 | 色美美综合视频| 国产成人啪午夜精品网站男同| 肉丝袜脚交视频一区二区| 成人欧美一区二区三区在线播放| 久久免费的精品国产v∧| 91精品国产综合久久久久久久久久| 99久久99精品久久久久久| 韩国精品主播一区二区在线观看 | 欧美人与z0zoxxxx视频| 91视频91自| 成人av网在线| 国产电影一区在线| 激情综合色播五月| 蜜桃免费网站一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲人成影院在线观看| 国产精品拍天天在线| 国产色产综合色产在线视频| 久久精品一区八戒影视| 久久伊人蜜桃av一区二区| 精品国产91洋老外米糕| 日韩欧美高清dvd碟片| 在线不卡欧美精品一区二区三区| 欧美理论在线播放| 欧美日韩黄视频| 制服丝袜在线91| 日韩免费一区二区三区在线播放| 欧美mv日韩mv国产网站| 欧美大片日本大片免费观看| 日韩欧美卡一卡二| 精品国产乱码久久| 久久精品日产第一区二区三区高清版 | 久久精品人人爽人人爽| 国产亚洲精品久| 国产精品区一区二区三区| 国产日韩欧美在线一区| 国产精品国产三级国产aⅴ无密码| 日本一区二区三区dvd视频在线| 久久蜜桃av一区二区天堂| 久久久精品欧美丰满| 中文字幕成人av| 亚洲日本在线天堂| 亚洲风情在线资源站| 免费观看在线色综合| 国产一区二区三区在线观看精品| 国产一区二区三区精品欧美日韩一区二区三区| 麻豆国产精品777777在线| 韩国av一区二区三区| 国产精品主播直播| 色偷偷久久人人79超碰人人澡| 欧美日韩综合在线| 久久综合色播五月| 中文字幕亚洲不卡| 日韩国产精品久久| 成人一二三区视频| 欧美日韩视频在线一区二区 | 中文字幕成人av| 亚洲图片欧美一区| 久久成人免费电影| 91在线观看下载| 欧美一级片在线| 国产精品色一区二区三区| 亚洲国产视频a| 国产乱码一区二区三区| 91蝌蚪porny| 欧美成人官网二区| 亚洲欧美一区二区三区极速播放| 日韩电影一二三区| 91麻豆国产在线观看| 日韩欧美国产精品一区| 亚洲天堂网中文字| 久草热8精品视频在线观看| 99久久精品国产网站| 欧美成人激情免费网| 一区二区三区国产豹纹内裤在线| 久久99九九99精品| 欧美日韩中文字幕精品| 国产欧美1区2区3区| 日韩电影在线观看电影| 色伊人久久综合中文字幕| 久久综合成人精品亚洲另类欧美| 一区二区三区欧美| 国产成人aaaa| 精品久久久久av影院| 亚洲电影你懂得| 不卡欧美aaaaa| 久久天堂av综合合色蜜桃网| 亚洲高清中文字幕| 色综合婷婷久久| 国产日本亚洲高清| 另类综合日韩欧美亚洲| 欧美猛男超大videosgay| 最新欧美精品一区二区三区| 国产一区二区伦理片| 日韩欧美在线不卡| 午夜视频一区在线观看| 色www精品视频在线观看| 国产精品免费丝袜| 国产99久久久国产精品潘金网站| 精品国产三级电影在线观看| 欧美aaaaa成人免费观看视频| 欧美日韩日日摸| 亚洲成a人v欧美综合天堂| 日本久久电影网| 亚洲女同ⅹxx女同tv| gogo大胆日本视频一区| 国产精品拍天天在线| 国产不卡视频一区| 国产视频一区在线观看| 国产一区福利在线| 久久嫩草精品久久久精品| 韩日欧美一区二区三区| 亚洲精品一区二区三区99| 裸体在线国模精品偷拍| 欧美成人r级一区二区三区| 捆绑调教一区二区三区| 精品91自产拍在线观看一区| 精品一区二区国语对白| 精品久久久久久无| 国产盗摄视频一区二区三区| 国产精品色哟哟网站| a美女胸又www黄视频久久| 中文字幕在线不卡一区二区三区| 成人在线综合网站| 亚洲欧美日韩国产另类专区| 91啪亚洲精品| 午夜精品久久一牛影视| 91精品久久久久久久久99蜜臂| 日韩精品乱码免费| 久久无码av三级| 99精品久久久久久| 亚洲在线中文字幕| 日韩视频在线一区二区| 国产一区二区导航在线播放| 欧美国产日韩亚洲一区| 色婷婷综合久久久中文一区二区 | 久久久久九九视频| 国产成人超碰人人澡人人澡| 中文字幕一区二区三| 欧美日韩免费在线视频| 美女国产一区二区| 国产精品久久久久久久久免费相片| 成人性生交大片免费看中文 | 91精品欧美综合在线观看最新 |