freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

5407軟件開(kāi)發(fā)技術(shù)基礎(chǔ)(編輯修改稿)

2024-11-05 09:57 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 理任務(wù) ? 對(duì)內(nèi)存儲(chǔ)器進(jìn)行分配、變換、保護(hù)和擴(kuò)充,存儲(chǔ)管理還應(yīng)該能夠在內(nèi)存和外存之間交換數(shù)據(jù)和代碼。 ? 在 Windows操作系統(tǒng)下,存儲(chǔ)器被保護(hù)起來(lái),程序和用戶無(wú)法直接訪問(wèn),需要在程序中通過(guò)靜態(tài)和動(dòng)態(tài)兩種方式來(lái)訪問(wèn)。 ? Windows的內(nèi)存管理完成物理內(nèi)存和虛擬內(nèi)存之間的交換,虛擬內(nèi)存是 32位的,多達(dá) 4GB的大小,內(nèi)存管理還提供了一個(gè)核心服務(wù),完成內(nèi)存映射文件、寫時(shí)復(fù)制內(nèi)存和用戶程序使用的大量和稀疏內(nèi)存的管理。 ? 存儲(chǔ)分配 :按分配策略和算法分配主存空間; ? 地址變換 :將程序在外存中的邏輯地址轉(zhuǎn)換為在內(nèi)存中的物理地址; ? 存儲(chǔ)保護(hù) :保護(hù)各類程序(系統(tǒng)的、用戶的、應(yīng)用程序的)及數(shù)據(jù)區(qū)免遭破壞; ? 存儲(chǔ)擴(kuò)充 :解決在小的存儲(chǔ)空間中運(yùn)行大程序的問(wèn)題,即虛擬存儲(chǔ)問(wèn)題。 存儲(chǔ)器管理主要有 4個(gè)功能 NT內(nèi)存管理 Windows NT在 X86體系下虛擬地址空間的分布 8 256MB 2GB 虛擬存儲(chǔ)器技術(shù) ? 它的基本思想是: 把部分外存空間作為主存使用,以此為用戶提供足夠大的地址空間 —— 虛存空間。用戶可以在這個(gè)地址空間內(nèi)編程,而完全不考慮主存的大小。 ? 虛擬存儲(chǔ)器技術(shù)實(shí)際上是采用內(nèi)、外存結(jié)合的辦法實(shí)現(xiàn)的。硬件負(fù)責(zé)虛實(shí)地址的轉(zhuǎn)換;軟件負(fù)責(zé)實(shí)存(主存)和虛存(外存)之間的信息調(diào)度管理。 用戶程序訪問(wèn)內(nèi)存兩種方式: ◆ 靜態(tài)訪問(wèn): 程序中聲明各種變量 float a[100]。 ◆ 動(dòng)態(tài)訪問(wèn): 通過(guò)指針申請(qǐng)內(nèi)存空間 new命令 malloc()和 VirtualAlloc() LPVOID VirtualAlloc( LPVOID lpAddress, // 起始地址 DWORD dwSize, // 大小 DWORD flAllocationType, // 分配類型 !( MEM_COMMIT等) DWORD flProtect // 保權(quán)限( PAGE_READWRITE等) )。 BOOL VirtualFree( LPVOID lpAddress, //起始地址 DWORD dwSize, //大小 DWORD dwFreeType //釋放類型( MEM_RELEASE等) )。 申請(qǐng)?zhí)摂M內(nèi)存函數(shù)和釋放函數(shù) 程序算法: ①?gòu)拿钚薪邮蛰斎?n (n為要求階乘的數(shù) ) 使用 strtol函數(shù)將 argv[1]轉(zhuǎn)換為 long整數(shù); ②通過(guò)函數(shù) VirtualAlloc申請(qǐng) n*1024 的地址空間 相當(dāng)于聲明數(shù)組 a[n*1024] ③ 調(diào)用計(jì)算階乘函數(shù) lfac; ④ 一位一位顯示階乘結(jié)果; ⑤通過(guò)函數(shù) VirtualFree 釋放虛擬內(nèi)存。 虛擬內(nèi)存使用 例 36使用動(dòng)態(tài)申請(qǐng)的虛擬內(nèi)存空間來(lái)編寫一個(gè)計(jì)算任何數(shù)的階乘的程序 include include int lfac(int *a, int n) { int sum,sc。 for(int i=0。in*1024。i++) a[i]=0。 //空間清零 a[0]=1。 //最低位設(shè)為 1 for(i=2。i=n。i++) { sc=0。 for(int j=0。jn*1024。j++) { sum=a[j]*i+sc。 //上一次進(jìn)位值和當(dāng)前計(jì)算結(jié)果求和 sc=sum/10。 //存放進(jìn)位數(shù)值 a[j]=sum%10。 //將余數(shù)存入數(shù)組 } } if(sc0) return 1。 else return 0。 } 計(jì)算任何數(shù)的階乘函數(shù) int main(int argc, char *argv[]) { if (argc 2) { cout\a使用方法 : Example3_6 被階乘數(shù) 。 return 1。 } char *p。 int n=strtol(argv[1],amp。p,10)。//轉(zhuǎn)換為 long型整數(shù) if(n0) { cout\a輸入數(shù)據(jù)錯(cuò) 。 return 1。 } int * lpBase =(int *) VirtualAlloc(NULL, n*10240, MEM_COMMIT, PAGE_READWRITE)。// 保留 n*10240 的地址空間 int * lpPage = (int *)VirtualAlloc (lpBase + 0, n*1024,MEM_COMMIT,PAGE_READWRITE)。// 為頁(yè)地址提交內(nèi)存 int a。 bool flag=false。 a=lfac(lpPage,n)。 if(a0) cout溢出 endl。 else { for(int i=n*10241。i=0。i) if(flag || lpPage[i]0) { flag=true。 coutlpPage[i]。//輸出每一位 } coutendl。 } VirtualFree ((int *)lpPage + 0,n*1024,MEM_DECOMMIT)。// 對(duì)頁(yè)地址解除提交內(nèi)存 VirtualFree (lpBase,n*10240,MEM_RELEASE)。// 釋放整個(gè)范圍的地址 return 0。 } 測(cè)試主函數(shù) 運(yùn)行 動(dòng)態(tài)連接庫(kù)的使用 1. 使用 DLL的動(dòng)態(tài)連接不是將庫(kù)代碼拷貝,只在程序中記錄函數(shù)的入口點(diǎn)和接口,在程序執(zhí)行時(shí)才將庫(kù)代碼裝入內(nèi)存,如果有多個(gè)程序使用相同的 DLL, 也只需將 DLL在內(nèi)存中裝載一次,節(jié)省了內(nèi)存開(kāi)銷。 2. DLL是基于 Windows的程序模塊,它不僅包含可執(zhí)行代碼,還可以包含數(shù)據(jù),各種資源,擴(kuò)大了庫(kù)文件的使用范圍。 3. 對(duì)于一個(gè)大型的、不斷更新的應(yīng)用程序,可以將許多重復(fù)的功能寫成 DLL, 用主程序調(diào)用,這樣既減少了開(kāi)發(fā)的工作量,又提高了訪問(wèn)速度。 4. DLL獨(dú)立于編程語(yǔ)言,可以使用目前流行的多種計(jì)算機(jī)語(yǔ)言或開(kāi)發(fā)工具來(lái)編制和調(diào)用,比如: VC++、 C++Builder、PB、 VB、 Delphi和匯編語(yǔ)言等。 動(dòng)態(tài)鏈接庫(kù)( DynamicLink Library), 簡(jiǎn)稱 DLL,使用 DLL有許多優(yōu)點(diǎn): 計(jì)算圓周率任意位數(shù) 程序步驟: ? 建立 “ Win32控制臺(tái)工程 ” , 工程名稱為 “ Example3_7” ? 在工程中添加一個(gè) C++源程序文件名為 “ ” 具體程序源代碼見(jiàn)下頁(yè) ? 將 debug目錄下 ? 將 Example3_7目錄下 ? 在工程中加入文件 “ ” project|add to project|file|選 ? 編譯連接 ? 運(yùn)行 Example3_7 500 圓周率程序 // include include int ComputPI(long bits)。 int main(int argc, char *argv[]) { if (argc 2) { cout\a使用方法 : Example3_7 位數(shù) 。 return 1。 } char *p。 long n=strtol(argv[1],amp。p,10)。//轉(zhuǎn)換為 long型整數(shù) if(n0) { cout\a輸入數(shù)據(jù)錯(cuò) 。 return 1。 } if(ComputPI(n)==1) { cout\a計(jì)算出錯(cuò)數(shù)據(jù)錯(cuò) endl。 } return 0。 } 創(chuàng)建 DLL的方法 將一個(gè)以上函數(shù)形成 DLL的方法步驟: 生成工程名為 file|new|MFC AppWizard[dll] 打開(kāi) MY 創(chuàng)建 DLL的方法 將一個(gè)以上函數(shù)形成 DLL的方法步驟: 生成工程名為 file|new|MFC AppWizard[dll] 打開(kāi) ,在開(kāi)頭處
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1