string::clear 関数の説明では、次のように述べています。
clear:文字列の内容を消去し、空の文字列 (長さ 0 文字) になります。
list::clear 関数の説明では、次のように述べています。
clear:リスト コンテナーからすべての要素 (破棄される) を削除し、コンテナーのサイズを 0 のままにします。
クリアは文字列とリストのメモリを上書きしますか、それとも単に解放しますか?
消去したデータを上書きする機能は必要ありません。
メモリは上書きされません。解放されることさえ保証されていません。
たとえば、巨大な文字列を作成して呼び出すclear
と、そのサイズだけが縮小されますが、割り当てられたメモリはまだ予約されている可能性があります。ただし、文字列が範囲外になると解放されます。
std::list
リストをクリアすると、リスト内の要素が破棄されることが少なくとも保証されます。
そのため、メモリに機密データが含まれている場合は、手動で上書きする必要があります。