Это правда, что память, которая использовалась программой, может по-прежнему содержать интересную информацию после ее завершения / выхода.
Это также верно для программы, которая не содержит утечек памяти.Правильно освобождая выделенную память это не очищает.
Однако весьма вероятно, что любая программа, которая не правильно освобождает выделенную память, может также не удастся безопасно удалить информацию из этой забытой / просочившейся памяти.
Обратите внимание, что «утечка» в данном случае относится кпамять, которая не была освобождена до конца программы, игнорируя тот факт, что такая память будет восстановлена практически каждой современной операционной системой.Память доступна для использования другими программами, особенно программами, запускаемыми позже.
Возможны операционные системы, которые удаляют явно или освобождают от простоты память, но маловероятно, что это не относится к отдельным случаям использования, связанным с безопасностью.
Выше с«Явно удаляя», я имею в виду, что сама программа пишет несущественную информацию перед освобождением.Под «неявным удалением» я подразумеваю освобождение достаточно, удаление происходит как-то во время free()
.
Я использую C в качестве языка примера, тег был там, но был удален (не без оснований).
Коллекция Garabge (на языках, которые это подразумевают) ничего не меняет в этом.Сборка мусора (при освобождении от обязанности правильно освободить память) может неявно перезаписывать вновь доступную память, но не гарантирует ее;точно так же, как механизмы освобождения в языках без сборки мусора.