Win32汇编——内存管理

本文介绍了Win32汇编中的内存管理,包括Windows的内存分层、内存管理函数(如GlobalAlloc、GlobalFree)、堆管理(默认堆与私有堆的创建与操作)以及虚拟内存管理函数。强调了HeapAlloc在Win32下的重要性,并提醒避免使用可能导致错误的兼容性函数。
摘要由CSDN通过智能技术生成

一、内存管理基础

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值