gpt4 book ai didi

c++ - C++ vector的内存分配

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:14 34 4
gpt4 key购买 nike

vector<bool> C++ STL 中的类针对内存进行了优化,以便为每个 bool 分配一位存储,而不是一个字节。每次我输出 sizeof(x)对于 vector<bool> x ,结果是创建 vector 结构的 40 个字节。 sizeof(x.at(0))总是返回 16 个字节,这一定是为许多 bool 分配的内存值,而不仅仅是位置零的值。 16个字节包含多少个元素? 128到底是什么?如果我的 vector 有更多或更少的元素怎么办?

我想测量 vector 及其所有内容的大小。我将如何准确地做到这一点?是否有 C++ 库可用于查看每个变量分配的内存?

最佳答案

我认为没有任何标准方法可以做到这一点。唯一信息一个 vector<bool> 实现告诉你它是如何工作的是 reference成员类型,但没有理由假设这与数据在内部的实际存储方式有任何一致性;只是你得到一个reference当您将迭代器取消引用到容器中时返回。

所以你已经知道了容器本身的大小,这很好,但是要得到数据占用的内存量,你将不得不检查你的实现的标准库源代码并推导出一个解决方案从那个。不过,老实说,一开始想要这似乎是一件奇怪的事情。

实际上,使用 vector<bool>首先是一种奇怪的东西。以上所有本质上就是为什么现在不赞成使用它的原因:它几乎完全不兼容其他标准容器设定的约定……甚至其他 vector 设定的约定。特化。

关于c++ - C++ vector<bool>的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523118/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com