📄 5-3.htm
字号:
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>释放或收回应用程序使用的部分虚拟地址</span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
</tr>
<tr style='height:17.0pt;mso-yfti-irow:4'>
<td width=128 style='width:96.0pt;border-top:none;border-left:none;
border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'>VirtualProtect()<o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
<td width=381 style='width:285.8pt;border:none;border-bottom:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>改变虚拟内存区域保护规范</span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
</tr>
<tr style='height:17.0pt;mso-yfti-irow:5'>
<td width=128 style='width:96.0pt;border-top:none;border-left:none;
border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'>VirtualLock()<o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
<td width=381 style='width:285.8pt;border:none;border-bottom:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>防止系统将虚拟内存区域通过系统交换到页面文件中</span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
</tr>
<tr style='height:17.0pt;mso-yfti-irow:6;mso-yfti-lastrow:yes'>
<td width=128 style='width:96.0pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.5pt;border-right:solid windowtext .5pt;
mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt;
height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='font-size:9.0pt'>VirtualUnlock()<o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
<td width=381 style='width:285.8pt;border:none;border-bottom:solid windowtext 1.5pt;
mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
padding:0cm 5.4pt 0cm 5.4pt;height:17.0pt'>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span
style='font-size:9.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman"'>释放虚拟内存的锁定区域,必要时,允许系统将其交换到页面文件中</span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='font-size:9.0pt'><o:p></o:p></span></span></p>
</td>
<span style='mso-bookmark:_Toc16587483'></span>
</tr>
</table>
</div>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>提供虚拟内存分配功能的是</span><span lang=EN-US>VirtualAlloc() API</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>。该</span><span
lang=EN-US>API</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>支持用户向系统要求新的虚拟内存或改变已分配内存的当前状态。用户若想通过</span><span lang=EN-US>VirtualAlloc()
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>函数使用虚拟内存,可以采用两种方式通知系统:</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>1) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>简单地将内存内容保存在地址空间内;</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>2) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>请求系统返回带有物理存储区</span><span lang=EN-US> (RAM</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的空间或换页文件</span><span
lang=EN-US>) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>的部分地址空间。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>用户可以用</span><span lang=EN-US>flAllocation Type</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>参数</span><span
lang=EN-US> (commit</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>和</span><span lang=EN-US>reserve) </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>来定义这些方式,用户可以通知</span><span
lang=EN-US>Windows</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>按只读、读写、不可读写、执行或特殊方式来处理新的虚拟内存。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>与</span><span lang=EN-US>VirtualAlloc() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>函数对应的是</span><span
lang=EN-US>VirtualFree() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>函数,其作用是释放虚拟内存中的已调配页或保留页。用户可利用</span><span lang=EN-US>dwFree
Type</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>参数将已调配页修改成保留页属性。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>VirtualProtect() </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>是</span><span lang=EN-US>VirtualAlloc() </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的一个辅助函数,利用它可以改变虚拟内存区的保护规范。</span></span><a
href="#_top"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1025" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="./5-3.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="./5-3.files/image003.gif" v:shapes="_x0000_i1025"><![endif]></span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc45715745"></a><a
name="_实验目的"></a><span style='mso-bookmark:_Toc45715745'><span
style='mso-bidi-font-family:宋体'>实验目的</span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>1) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>通过实验了解</span><span lang=EN-US>Windows 2000</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>内存的使用,学习如何在应用程序中管理内存,体会</span><span
lang=EN-US>Windows</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>应用程序内存的简单性和自我防护能力。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>2) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>学习检查虚拟内存空间或对其进行操作;</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>3) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>了解</span><span lang=EN-US>Windows 2000</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>的内存结构和虚拟内存的管理,进而了解进程堆和</span><span
lang=EN-US>Windows</span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>为使用内存而提供的一些扩展功能。</span></span><a href="#_top"><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='text-decoration:none;
text-underline:none'><!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75"
style='width:45pt;height:17.25pt'>
<v:imagedata src="./5-3.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="./5-3.files/image003.gif" v:shapes="_x0000_i1026"><![endif]></span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc45715746"></a><a
name="_工具/准备工作"></a><span style='mso-bookmark:_Toc45715746'><span
style='mso-bidi-font-family:宋体'>工具<span lang=EN-US>/准备工作</span></span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>在开始本实验之前,请回顾教科书的相关内容。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>您需要做以下准备:</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>1) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>一台运行</span><span lang=EN-US>Windows 2000 Professional</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>操作系统的计算机。</span></span></p>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
lang=EN-US>2) </span></span><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"'>计算机中需安装</span><span lang=EN-US>Visual C++ 6.0</span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>专业版或企业版。</span></span><a
href="#_top"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US
style='text-decoration:none;text-underline:none'><!--[if gte vml 1]><v:shape
id="_x0000_i1027" type="#_x0000_t75" style='width:45pt;height:17.25pt'>
<v:imagedata src="./5-3.files/image003.gif" o:title="02"/>
</v:shape><![endif]--><![if !vml]><img border=0 width=60 height=23
src="./5-3.files/image003.gif" v:shapes="_x0000_i1027"><![endif]></span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<h3><span style='mso-bookmark:_Toc16587483'><a name="_Toc45715747"></a><a
name="_实验内容与步骤"></a><span style='mso-bookmark:_Toc45715747'><span
style='mso-bidi-font-family:宋体'>实验内容与步骤</span></span></span><span
style='mso-bookmark:_Toc16587483'><span lang=EN-US style='mso-bidi-font-family:
宋体'><o:p></o:p></span></span></h3>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'></span><a
href="#_1._虚拟内存的检测"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US>1.
</span></span><span style='mso-bookmark:_Toc16587483'><span style='font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>虚拟内存的检测</span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'></span><a
href="#_2._虚拟内存操作"><span style='mso-bookmark:_Toc16587483'><span lang=EN-US>2. </span></span><span
style='mso-bookmark:_Toc16587483'><span style='font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"'>虚拟内存操作</span></span><span
style='mso-bookmark:_Toc16587483'></span></a><span style='mso-bookmark:_Toc16587483'></span></p>
<p class=MsoNormal><span style='mso-bookmark:_Toc16587483'><span lang=EN-US> </span></span></p>
<h4><span style='mso-bookmark:_Toc16587483'><a name="_1._虚拟内存的检测"></a><span
lang=EN-US style='mso-bidi-font-family:宋体'><span style="mso-spacerun:
yes"> </span>1. 虚拟内存的检测<o:p></o:p></span></span></h4>
<p class=MsoNormal style='text-indent:21.0pt'><span style='mso-bookmark:_Toc16587483'><span
style='font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-famil
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -