std::unordered_set が取ったメモリを解放する方法を教えてください。
unordered_set::clear() は、メモリを解放せずにセットをクリアすると思います。
unordered_set の保持をローカル関数で解放する必要があります。ローカル関数を呼び出すたびにメモリが消費されるため、ローカル関数の最後でメモリを解放する必要があります。
ありがとうございました
std::unordered_set が取ったメモリを解放する方法を教えてください。
unordered_set::clear() は、メモリを解放せずにセットをクリアすると思います。
unordered_set の保持をローカル関数で解放する必要があります。ローカル関数を呼び出すたびにメモリが消費されるため、ローカル関数の最後でメモリを解放する必要があります。
ありがとうございました
unordered_set
スタック上にある場合、必要なメモリを自動的に解放します。
void some_function()
{
unordered_set<int> set;
// use the set
} // set memory will be deallocated automatically here
のメモリをクリアする通常の方法unordered_set
は、標準コンテナの場合と同じです。
set = std::unordered_set<T>()
以下も使用できます。
std::unordered_set<T>().swap(set)
これは、r-value refs の前の数日間、コンテナからメモリを解放する通常の方法でした。
T
セットに含まれるオブジェクトのタイプに置き換える必要があります。
セットはノードベースのコンテナであるため、ノードのメモリは実際に適切に解放されます。しかし、ハッシュ テーブルが多くのバケットに成長している可能性があるため、rehash(1)
もう一度小さくすることもできますが、これはヒントに過ぎません。バケットの数を減らすためにセットは必要ありません。