优秀的手机游戏下载!
首页 ZeroMemory是做什么用

ZeroMemory是做什么用

发布时间:2024-06-04 18:09:01 编辑:打包星星 浏览:666

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在给你的变量分配内存的时候,只是划定一块内存区域给变量,由于物理内存是操作系统里面所有进程共享的资源,所以分配的内存区域有可能刚刚被其他程序释放掉…
查看详情
相关资讯
猜你喜欢