一、内存管理基础
1.Windows的内存分层管理图:
2.不同内存管理函数的操作对象图:
3.GlobalMemoryStatus函数通过MEMORYSTATUS结构获取系统内存信息,示例代码如下:
.const
szInfo db '物理内存总数 %lu 字节',0dh,0ah
db '空闲物理内存 %lu 字节',0dh,0ah
db '虚拟内存总数 %lu 字节',0dh,0ah
db '空闲虚拟内存 %lu 字节',0dh,0ah
db '已用内存比例 %d%%',0dh,0ah
db '————————————————',0dh,0ah
db '用户地址空间总数 %lu 字节',0dh,0ah
db '用户可用地址空间 %lu 字节',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
二、标准内存管理函数
1.功能:在进程的默认堆中申请和释放内存块
2.主要的函数有:
申请:GlobalAlloc
释放:GlobalFree
修改:GlobalReAlloc
锁定:GlobalLock