需要找到我已实现的树数据结构占用的确切大小(以字节为单位)。节点结构如下
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这样的工具来查找使用的内存是否更好?
答案 0 :(得分:3)
或者不是所有这些,使用像MemTrack这样的工具来查找使用的内存是否更好?
是。外部没有人知道unordered_map
或其他复杂的不透明对象需要多少内存,而一个好的内存分析器也可能会显示内存分配器本身需要多少开销。