ZeroMemory是做什么用

发布时间:2024-06-04 18:09:01 来源:君肯网

Windows在给你的变量分配内存的时候,只是划定一块内存区域给变量,由于物理内存是操作系统里面所有进程共享的资源,所以分配的内存区域有可能刚刚被其他程序释放掉--而这些程序写入到那一段内存的数据还没有被清空,因此如果你不用ZeroMemory将刚刚分配的内存清零的话,读取一段被其他程序写入的数据对你的程序而言是一堆垃圾,这就是为什么有的时候会出现AccessViolation的原因。

就好比你去一个很忙的餐厅吃饭,服务员把你领到一个桌子前,这个桌子需要被擦干净你才能用一样,ZeroMemory就相当于擦桌子。

简单的,比如说VC内建类型,int, double,

char之类的,不需要用ZeroMemory。

一般来说,分配结构体变量,都需要使用ZeroMemory

这个函数主要是用来给Windows的API传递结构参数用的。因为windows的API内部参数检测机制比较严格,没有用的参数必须要设为零。结构中的参数很多,一个一个设比较麻烦,所以调用这个函数会方便一些。

请教ZeroMemory()函数

ZeroMomory并不调用库,它只是RtlZeroMemory的一个宏

而RtlZeroMemory只是memset的一个宏

还有另外一个函数SecureZeroMemory

SecureZeroMemory是RtlSecureZeroMemory的一个宏

而RtlSecureZeroMemory则是一个内联函数,x86下,它通过如下方式把内存清零:

while (size) {

*ptr = 0

ptr++

ZeroMemory是做什么用

size--

}

The ZeroMemory function fills a block of memory with zeros.

VOID ZeroMemory(

PVOID Destination, // memory block

SIZE_T Length // size of memory block

)

Parameters

Destination

[in] Pointer to the starting address of the block of memory to fill with zeros.

Length

[in] Size, in bytes, of the block of memory to fill with zeros.

上面是MSDN中的解释,就是说这个函数实现的功能是将Destination制定的内存地址开始,Length字节长度的内存数据清零。

以上就是关于ZeroMemory是做什么用全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

Windows在给你的变量分配内存的时候,只是划定一块内存区域给变量,由于物理内存是操作系统里面所有进程共享的资源,所以分配的内存区域有可能…
查看详情
Windows在给你的变量分配内存的时候,只是划定一块内存区域给变量,由于物理内存是操作系统里面所有进程共享的资源,所以分配的内存区域有可能…
查看详情
Windows在给你的变量分配内存的时候,只是划定一块内存区域给变量,由于物理内存是操作系统里面所有进程共享的资源,所以分配的内存区域有可能…
查看详情
相关文章
推荐游戏
风之谷
风之谷
游戏资讯 10.5M
下载
斗罗大陆3
斗罗大陆3
游戏资讯 566.9M
下载
冠军网球
冠军网球
游戏资讯 148.1M
下载
最佳炮手
最佳炮手
游戏资讯 68.1M
下载
如梦下弦月
如梦下弦月
游戏资讯 840.1M
下载
富甲封神传
富甲封神传
游戏资讯 263.0M
下载