【发布时间】:2021-07-09 03:52:02
【问题描述】:
我有一个二维向量vector<vector<int>> data。我想知道一段时间后它占用的总内存。我可以遍历向量并添加每个内部向量的大小,但有更好的方法吗?
跟进:如果我有vector<string> data。有没有办法在不遍历向量的情况下获得一段时间后占用的内存?
【问题讨论】:
-
粗略的想法:将所有
length值相加并乘以sizeof(int)。 -
您是否使用过任何内存分析工具?
-
你真的想知道内存的使用量,还是只知道元素的总数?如果是实际记忆,为什么需要知道这一点?应该解决什么问题?
-
顺便说一下,即使你计算了所有元素和所有对象的大小,它仍然不是使用的真实大小,因为分配器本身可能已经为每个元素添加了一些内部元信息分配。出于对齐原因,也可能存在填充。并且操作系统本身通常将 pages 分配给进程而不是单个字节。