Re: [問題] 請問一下關於ZeroMemory的用法
千萬不要拿來這樣子做...
在 winbase.h 裡,你可以找到這一行
#define ZeroMemory RtlZeroMemory
其實它是呼叫 ntdll 中的 RtlZeroMemory
那我們看一下 RtlZeroMemory 在幹麼
7C922C64 > 57 push edi
7C922C65 8B7C24 08 mov edi, dword ptr [esp+8]
7C922C69 8B4C24 0C mov ecx, dword ptr [esp+C]
7C922C6D 33C0 xor eax, eax
7C922C6F FC cld
7C922C70 8BD1 mov edx, ecx
7C922C72 83E2 03 and edx, 3
7C922C75 C1E9 02 shr ecx, 2
7C922C78 F3:AB rep stos dword ptr es:[edi]
7C922C7A 0BCA or ecx, edx
7C922C7C 75 04 jnz short 7C922C82
7C922C7E 5F pop edi
7C922C7F C2 0800 retn 8
7C922C82 F3:AA rep stos byte ptr es:[edi]
7C922C84 5F pop edi
7C922C85 C2 0800 retn 8
簡單的說,就是如 MSDN 所說的
RtlZeroMemory(void *dest, size_t len)
從 *dest 指到的位置開始,置 len bytes 個 0 (單位是 byte)
所以你丟 iterator 給它的話,會死的很難看
不過 ZeroMemory 通常會被 compiler 最佳化掉
所以最後其實不會 call 到 RtlZeroMemory 去
講這麼多,其實 ZeroMemory(ptr, 5) = memset(ptr, 0, 5) 吧
有錯請指正
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.44.186.147
※ 編輯: ewn 來自: 114.44.186.147 (04/09 19:06)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章