有什么方法可以在 c++ 中找到分配给地图的内存量/大小?有一个函数可以找到映射的大小,即映射中的条目数,但是内存有没有这样的方法。我有一张地图(字符串,字符串)。 sizeof() 总是给我 48 的大小。为什么会这样?谢谢 :)
原文由 freeborn 发布,翻译遵循 CC BY-SA 4.0 许可协议
有什么方法可以在 c++ 中找到分配给地图的内存量/大小?有一个函数可以找到映射的大小,即映射中的条目数,但是内存有没有这样的方法。我有一张地图(字符串,字符串)。 sizeof() 总是给我 48 的大小。为什么会这样?谢谢 :)
原文由 freeborn 发布,翻译遵循 CC BY-SA 4.0 许可协议
没有 简单 的方法,但如果你真的必须知道(虽然……你为什么会?),那么你可以找到。
默认情况下,所有标准库容器都使用“默认分配器”进行分配,它只不过是一个结构/类,在 new
和 delete
周围有一对包装函数(它们本身是,在内部,只不过是 malloc
和 free
的包装器,在许多编译器上进行了一些对齐和类型转换)。
如果您出于某种原因对默认分配器不满意,您可以为容器模板提供自定义分配器,它会无缝地使用该分配器。
如果您编写一个在分配/解除分配时递增/递减整数的分配器,您就会知道动态分配了多少内存。加上 sizeof
的值非常精确。
原文由 Damon 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答496 阅读✓ 已解决
不,那里没有。但是,对于支持
.size
方法的类,您可以实现类似的功能,例如字符串或标准容器:如果您想知道分配的内存,您可以使用
.capacity
: