需要找到我已经实现的树数据结构占用的确切字节大小。节点结构如下
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 之类的工具来查找使用的内存是否更好?
最佳答案
Or instead of all this, is it better to use tools like MemTrack to find the memory used?
是的。从外部无法得知 unordered_map
或其他复杂、不透明的对象需要多少内存,一个好的内存分析器可能还会告诉您内存分配器本身需要多少开销。
关于c++ - 包含 unordered_map 的结构的大小(以字节为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513583/