包含unordered_map的结构的字节大小

Size in bytes of a structure containing unordered_map

本文关键字:字节 结构 包含 map unordered      更新时间:2023-10-16

需要找到以字节为单位的确切大小,由我实现的树数据结构占用。节点结构如下

struct Node
{
    int  word;       
    int   count;       
    unordered_map<int, Node*> map;       
}node;   

我一直在做的是size(int)*2(对于单词和计数)+ map.bucket_count() * (sizeof(int) + sizeof(Node*)),并对每个节点重复执行此操作。如果我忽略了unordered_map中的存储元素开销,这是正确的方法吗?

另外,如果我是正确的map.bucket_count()给出了当前分配的桶的数量,包括预分配的桶。我应该使用map.size()而不是忽略预分配的桶吗?

或者使用MemTrack之类的工具来查找所使用的内存,而不是所有这些?

或者使用MemTrack之类的工具来查找所使用的内存,而不是所有这些?

是的。从外部无法得知unordered_map或其他复杂、不透明的对象占用了多少内存,一个好的内存分析器可能还会显示内存分配器本身占用了多少开销。