3

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

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

}node;   

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

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

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

4

1 回答 1

3

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

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

于 2011-09-22T11:16:10.337 回答