Здравствуйте, Macr0s, Вы писали:
M>Здравствуйте, donsergio, Вы писали:
D>>В MSDN подробно описано, чем различаются эти функции.
M>Там написано, что одна может быть опущена оптимизирующим компилятором, а другая — нет. Всё.
M>А почему так происходит?
M>Скоро выйдут новые компиляторы, которые будут оптимизировать и SecureZeroMemory...
M>И чем отличается алгоритм работы безопасной функции?
Прошелся отладчиком, SecureZeroMemory вызывает _RtlSecureZeroMemory:
volatile char *vptr = (volatile char *)ptr;
#if defined(_M_AMD64)
__stosb((PBYTE )((DWORD64)vptr), 0, cnt);
#else
while (cnt) {
*vptr = 0;
vptr++;
cnt--;
}
#endif
return ptr;
ZeroMemory вызывает memset, и тоже нормально обнуляет память.
... << RSDN@Home 1.1.4 beta 6a rev. 436> <под Within Temptation — Ice Queen (Single Edit)>>