【发布时间】:2011-08-25 13:21:26
【问题描述】:
如标题所示:给定某个 STL 容器类型的对象(例如 std::vector<int> 或 std::set<MyClass>)我想知道它们的内存消耗 --- 即 --- 存储消耗了多少内存元素,每个元素的辅助数据和容器大小。我假设存储的对象不会分配任何额外的内存。
对于std::vector<int> v,我可以添加:
sizeof(std::vector<int>) + v.capacity()*sizeof(int)
因为向量不存储每个元素的任何辅助数据。但是对于其他容器我该怎么做呢?
我可以忍受非常量的时间复杂度。
【问题讨论】:
-
最好提供您自己的日志分配器。这不适用于现有代码,但它可以让您准确跟踪容器分配内存的时间和方式。