9

string::clear 関数の説明では、次のように述べています。

clear:文字列の内容を消去し、空の文字列 (長さ 0 文字) になります。

list::clear 関数の説明では、次のように述べています。

clear:リスト コンテナーからすべての要素 (破棄される) を削除し、コンテナーのサイズを 0 のままにします。

クリアは文字列とリストのメモリを上書きしますか、それとも単に解放しますか?

4

2 に答える 2

11

消去したデータを上書きする機能は必要ありません。

于 2013-07-10T19:46:08.830 に答える
10

メモリは上書きされません。解放されることさえ保証されていません。

たとえば、巨大な文字列を作成して呼び出すclearと、そのサイズだけが縮小されますが、割り当てられたメモリはまだ予約されている可能性があります。ただし、文字列が範囲外になると解放されます。

std::listリストをクリアすると、リスト内の要素が破棄されることが少なくとも保証されます。

そのため、メモリに機密データが含まれている場合は、手動で上書きする必要があります。

于 2013-07-10T19:46:29.060 に答える