【问题标题】:How to measure total STL container memory consumption?如何测量总 STL 容器内存消耗?
【发布时间】: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)

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

我可以忍受非常量的时间复杂度。

【问题讨论】:

  • 最好提供您自己的日志分配器。这不适用于现有代码,但它可以让您准确跟踪容器分配内存的时间和方式。

标签: c++ stl


【解决方案1】:

创建您自己的STL allocator 并跟踪放置到它的内存请求的大小,然后添加容器本身的大小。 This article 很好地概述了创建一个。

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2022-06-14
    • 2017-10-01
    • 1970-01-01
    • 2014-09-02
    • 2017-05-28
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多