-
-
关于内存初始化函数的一些问题......拿来大家一走讨论下....
-
2006-5-27 18:50
4353
-
关于内存初始化函数的一些问题......拿来大家一走讨论下....
最近编写的一个程序中要初始化一段内存,所以要用到初化函......什么?变量在定时不就可以初化吗...嗯是的....高级语言的确是这样.但是我是用汇编写的.对于局部变量在定义时是无法初化的.但在用之前又需必要初始化的..否则可能会有意想不到的结果....查了下有库函数:
VOID ZeroMemory(
PVOID Destination,
// address of block to fill with zeros
DWORD Length // size, in bytes, of block to fill with zeros
);
可以用...但为了练习,还是自己写一个吧....我写了一个如下:
FillZero proc uses edi, _pvoidDest:dword, dwSize:dword
mov ecx, dwSize
mov edi, _pvoidDest
push ds
pop es
xor eax, eax
rep stosb
ret
FillZero endp
但写完之后自己想了下,有以下疑问:
对于windows其段地址寄存器是由系统来维护的...其中DS,ES,SS是想等的....所以程序程序可以正常初化内存....但是对于DOS程序
其DS,SS是不等的...对于全局变量程序可以,但是对于局部变量...
它在堆栈段中....程序能初始化内存吗...我认为不能....
我也是刚开始学不久..有些地方理解的不深,有错误请大家指正....请高手给偶一点指点....不胜感激.......
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课