2011-08-25 28 views
5

タイトルと同じように、STLコンテナのタイプのオブジェクト(たとえばstd::vector<int>またはstd::set<MyClass>)を与えられました。私はそのメモリ消費量を知っています---つまり、要素を格納するためにどれだけのメモリが消費されているか、補助各要素のデータとコンテナのサイズ。私は、格納されたオブジェクトが追加のメモリを割り当てないと仮定します。総STLコンテナのメモリ消費量を測定する方法は?

std::vector<int> vのために私は追加することができます。ベクトルは要素ごとに任意の補助データを格納しない

sizeof(std::vector<int>) + v.capacity()*sizeof(int) 

ので。しかし、私は他の容器のためにどうすればいいですか?

私は一定しない時間の複雑さで暮らすことができます。

+5

おそらく自分のロギングアロケータを提供することをお勧めします。これは既存のコードでは機能しませんが、コンテナがいつどのようにメモリを割り当てるかを正確に追跡できるようになります。 –

答えて

5

自分でSTL allocatorを作成し、配置されたメモリ要求のサイズを追跡してから、jsutにコンテナ自体のサイズを追加します。 This articleは、作成の概要を示します。

関連する問題