Re[3]: Обнуление памяти
От: crackoff Россия  
Дата: 03.08.05 12:04
Оценка:
Здравствуйте, 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)>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.