1

私はいくつかのイベントを受け取る C++ サービスを持っています。それらは処理された後にファイルに書き込まれ、その時点までメッセージはメモリ内にあるため、イベントを格納する大きなデータ構造があります。

書き込みが完了したら、メモリを格納しているすべての構造体のクリーンアップを行いますが、その後もメモリはダウンしていません。私はすべての共有ポインタを持っているので、何かが欠けていても最終的にはそれらをクリーンアップする必要がありますが、それは起こっていません。

サービスで valgrind を実行しましたが、メモリ リークは表示されません。メモリが占​​有されている場所を確認できる方法があるかどうかを確認したかったのですか?

4

1 に答える 1

1

それは正常です。メモリを解放することは、ほとんどの場合、純粋な効率の損失であり、最新のシステムはそれを回避します。

メモリが他に必要ない場合、それを解放する努力は明らかに無駄です。他の何かに必要な場合でも、OS はそれを再び使用する必要があり、解放するために行った作業を元に戻す必要があるため、無駄になります。

最新のシステムは、やむを得ない場合を除き、メモリを途中で解放することなく、メモリをある用途から別の用途に直接移行します。

于 2013-11-11T19:01:05.870 に答える