Здравствуйте, ·, Вы писали:
·>Нет. Ты вопрос не понял. На каком основании компилятор будет решать, что "calculateHash" не должна писать в файл (и если кто-то случайно или намеренно там в файл пишет, то выдать ошибку компиляции), а "writeHash" может писать в файл?
Программист явно укажет функции, которые могут писать в файл.
>>>Так в итоге в сколько-либо сложном проекте у тебя дойдёт до того, что программист будет говорить что все функции могут всё.
FDS>>Не дойдёт. А если дойдёт, значит проект должен выбрасываться и переписываться заново. Когда все функции могут всё — это как раз не то, что нужно.
·>А если не все, а только 95% функций? А если 5%? Где границу-то ставить?
Допустим у нас проект на 20 000 строк кода. 1000 тысяча строк кода может делать всё что угодно. Согласись, есть разница, сколько проверять?
·>Это гарантированно быстрее, чем делать много раз при удалении каждого объекта в программе.
Гарантированно быстрее вообще не делать.
Обнуление памяти при завершении процесса — это слишком рискованная операция. Обнулять всё должно очень и очень быстро.
FDS>>Вдруг процесс, всё же, упадёт?
·>Ты уж определись...
Одно дело при краше не очистится память и мы не могли очистить, а другое дело, когда при краше можно очистить память, а мы всё равно не очистили.
·>Судя по спеке эта функция ничего не обещает по поводу того, что она не будет ничего никуда копировать.
Что-то такое
pwdAddress = VirtualAlloc(0, len, 0x1000 | 0x2000 | 0x00400000, 0x04);
·>И уже не говоря про всякие железные уязвимости типа row hammer.
Железные уязвимости оставим железу.
Защититься от всего программными способами невозможно