【发布时间】:2015-10-09 23:11:50
【问题描述】:
C++ STL 中的vector<bool> 类针对内存进行了优化,以便为每个存储的bool 分配一位,而不是一个字节。每次我为vector<bool> x 输出sizeof(x) 时,结果是创建向量结构的40 个字节。 sizeof(x.at(0)) 总是返回 16 个字节,这必须是为许多 bool 值分配的内存,而不仅仅是位置为零的值。 16 个字节涵盖了多少个元素?到底是128?如果我的向量有更多或更少的元素怎么办?
我想测量向量及其所有内容的大小。我将如何准确地做到这一点?是否有可用于查看每个变量分配的内存的 C++ 库?
【问题讨论】:
-
您将对象的大小与对象分配的内存混淆了。
-
我明白其中的区别,我只是不知道用什么来查找分配的内存
-
这是一个很难定义的概念,因为一个字节的内存可能没有明确定义的所有权。它可以“属于”多个变量,也可以在其“拥有变量”被销毁后保持分配。
标签: c++ memory memory-management vector stl