>> может содержать то что было раньше.
> ...в этом процессе.А вот этого ^^^ никто IIRC никто не требует по стандартам, там честно говорят что память не инициализированная. И кто там как с ней поступил - довольно отдельный вопрос. Если некто достаточно умен чтобы чистить память - это хорошо, но что нам гарантирует именно такое поведение? Я какое-то требование на такое поведение упустил? В криптографии оптимизм - плохое качество. В общем случае данные остаются в памяти. То что конкретная система может быть и протрет их при выделении нулями - может быть. Но гарантий как я понимаю никаких.
> После завершения процесса память возвращается ядру (ядро помечает её как свободную).
> При выделении памяти новому процессу, ядро очищает выделяемые страницы (забивает их нулями).
Осталось только выяснить про какое именно ядро и какой ОС говорил благородный дон. Вообще с точки зрения программы (особенно портабельной, а у чистой алгоритмики наподобие криптографии нет причин не быть портабельной) глупо надеяться на какое-то конкретное поведение конкретного ядра - это при случае приведет к залету в стиле heartbleed если у юзера окажется "не та" система, версия ядра и прочее.
> Дя параноиков есть grsecurity - там патч на предмет того, чтобы занулять
> страницы стразу после освобожнеия, а не при выделении.
И это хорошая идея. Но наверное может потенциально тормознуть нечто. Но опять же, это ОС-специфичная штука. Программы которые шифруют что либо - в общем случае не должны надеяться на это и должны затирать ключи шифрования явным образом сами. К тому же им виднее всех когда ключ перестал требоваться.