c++ 如何测量STL容器的内存消耗总量?

5uzkadbs  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(177)

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

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

因为vectors不为每个元素存储任何辅助数据。但是我如何为其他容器存储辅助数据呢?
我可以忍受非恒定时间复杂度。

eyh26e7m

eyh26e7m1#

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

相关问题