В этой статье MSND говорится, что SecureZeroMemory()
подходит для случаев, когда конфиденциальные данные, хранящиеся в памяти некоторое время, должны быть обязательно перезаписаны как можно скорее, когда в них больше нет необходимости. Ответы на этот ТАК вопрос объясняют, почему это может иметь значение.
Есть ли смысл использовать SecureZeroMemory()
для инициализации только каждого блока памяти? Например, в одном проекте я вижу код, подобный следующему:
ICONINFO ii;
::SecureZeroMemory(&ii, sizeof(ICONINFO));
if (::GetIconInfo(hIcon, &ii))
{
//do stuff, then
//release bitmaps
if(ii.hbmMask)
::DeleteObject(ii.hbmMask);
if(ii.hbmColor)
::DeleteObject(ii.hbmColor);
}
зачем использовать SecureZeroMemory()
здесь вместо ZeroMemory()
, memset()
или инициализации значения? Я имею в виду, если компилятор решает, что инициализация не нужна и хочет оптимизировать ее - зачем мне применять ее? Есть ли причина использовать SecureZeroMemory()
здесь?