1. 基本概念
(1) 地址空间。
系统所有可用的内存地址集合称为地址空间。
(2) 物理内存
硬件系统中真实存在的存储空间称为物理内存,物理内存的访问通过硬件系统的总线进行。但不是每台32位机都具有4GB的内存空间。
(3) 虚拟地址空间。
为了访问内存的统一和方便,操作系统允许其上运行的程序访问所有4GB的内存空间中的地址。操作系统会做一些转换的地址转换工作,将程序的访问的地址转换为物理内存中的真实地址,然后进行数据的存储。操作系统进行转换后,供程序使用的地址空间称为虚拟地址空间。在32位系统上,可以使用的虚拟地址空间是4GB.
(4) 进程中的内存空间:用户内存空间与内核内存空间。
WINDOWS操作系统中的每个进程都有属于自己的虚拟地址空间。32位的windows操作系统将4GB的虚拟内存划分为两个部分,进程使用2GB,称为用户进程空间;内核使用2GB,称为系统地址空间或内核地址空间。
需要了解的内容:
(1) 虚拟地址空间中的数据时分页管理的;
(2) 应用程序不用考虑系统中其他应用程序的内存使用情况,如占用了多少内存、占用了哪些内存;
(3) 虚拟地址并不是物理地址空间中的地址,不是数据在内存中的真实存在的地址,操作系统会将进程的虚拟地址映射到真实的物理地址上。
(4) 进程也不用考虑真实的物理地址有多大,只需要知道了解可以使用2GB(一般情况下)的内存,操作系统负责转换;
(5) 如果系统中没有足够的物理内存供使用,那么操作系统会将当前没有使用的内存分页“调度”到硬盘上保存起来。
堆管理API
HeapCreate
GetProcessHeap
GetProcessHeaps
HeapAlloc
HeapReAlloc
GetSystemInfo
HeapSize
HeapFree
HeapDestory
虚拟内存管理
VirtualAlloc
VirtualAllocEx
VirtualFree
VirtualFreeEx
VirtualProtect
VirtualLock
VirtualUnlock
内存操作与内存信息管理API
CopyMemory
FillMemory
MoveMemory
ZeroMemory
GlobalMemoryStatusEx
IsBadCodePtr
IsBadReadPtr
IsBadStringPtr
IsBadWritePtr