正如标题所示:给定一个类型为std::vector<int>
或std::set<MyClass>
的对象,我想知道它们的内存消耗情况-也就是说-存储元素需要消耗多少内存,每个元素的辅助数据和容器大小。我假设存储的对象不会分配任何额外的内存。
对于std::vector<int> v
,我可以添加:
sizeof(std::vector<int>) + v.capacity()*sizeof(int)
因为向量不存储每个元素的任何辅助数据。但是我如何才能为其他容器做到这一点呢?
我可以忍受非常量的时间复杂度。
发布于 2011-08-25 13:29:37
创建您自己的STL allocator并跟踪放置到它的内存请求的大小,然后jsut添加容器本身的大小。This article很好地概述了如何创建一个。
https://stackoverflow.com/questions/7191093
复制