如何衡量总STL容器内存消耗?

时间:2011-08-25 13:21:26

标签: c++ stl

如标题中所示:给定一个STL容器类型的对象(例如std::vector<int>std::set<MyClass>)我想知道它们的内存消耗 - 那就是---多少内存用于存储元素,每个元素的辅助数据和容器大小。我假设存储的对象不分配任何额外的内存。

对于std::vector<int> v我可以添加:

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

因为向量不会为每个元素存储任何辅助数据。但我怎么能为其他容器做呢?

我可以忍受非恒定的时间复杂性。

1 个答案:

答案 0 :(得分:5)

创建自己的STL allocator并跟踪内存请求的大小,而不仅仅是添加容器本身的大小。 This article概述了创建一个。