Разумно ли явно очищать / обнулять чувствительные переменные после использования?

Я заметил, что некоторые программы явно не выделяют чувствительную память после использования. Например, в OpenSSL есть метод очистки памяти, занятой ключом RSA:

«Освобождает структуру RSA rsa. Эту функцию всегда следует использовать для освобождения структуры RSA, поскольку она также безопасно освобождает подполя, предварительно очищая память. . "

http://www.rsa.com/products/bsafe/documentation/sslc251html/group__COMMON__RSA__KEY__FUNCS.html#aRSA_free

Если любая программа (C / C ++) содержит такие чувствительные переменные, если вы явно обнуляете память, как указано выше? (Или обнуление памяти - это паранойя или просто мера предосторожности)?

Кроме того, когда программа завершается, вся выделенная память в конечном итоге выделяется другой программе. В системе Linux очищается или дезинфицируется память перед выделением другой программе? Или, может ли вторая программа прочитать часть старого содержимого памяти первой программы?

11
задан Oliver Charlesworth 22 May 2011 в 16:49
поделиться