Мне нужно написать службу Windows, которая в какой-то момент обрабатывает конфиденциальные данные (например, PIN-коды, пароли и т. Д.).Эта информация необходима в течение очень короткого промежутка времени: обычно она почти сразу отправляется на устройство чтения смарт-карт.
Давайте рассмотрим этот фрагмент кода:
{
std::string password = getPassword(); // Get the password from the user
writePasswordToSmartCard(password);
// Okay, here we don't need password anymore.
// We set it all to '\0' so it doesn't stay in memory.
std::fill(password.begin(), password.end(), '\0');
}
Теперь моя проблемаоб оптимизации компилятора.Здесь компилятор может обнаружить, что пароль собирается быть удаленным, и что изменение его значения на этом этапе бесполезно, и просто удалить вызов.
Я не ожидаю, что мой компилятор позаботится о значении будущих ссылокпамять.
Законны ли мои опасения?Как я могу быть уверен, что такой кусок кода не будет оптимизирован?