【发布时间】:2012-09-09 16:29:39
【问题描述】:
我想知道 bitset 是如何实际分配内存的。我从一些博客中读到它会占用内存。但是,当我运行以下代码时:
bitset<3> bits = 001;
cout<<sizeof(bits);
我得到的输出为 4。它背后的解释是什么?
还有一种方法可以在 C++ 中以位为单位分配空间吗?
【问题讨论】:
-
您不能以位为单位分配空间,因为这不是 C++ 抽象机的工作方式。就像你在超市买不到半根香蕉一样,你也不能分配半个字节。
-
它将四舍五入到存储 N 位所需的最少字节数,至少。编译器将添加对齐和其他内容以加快访问数据的速度,但具体如何实现则由实现定义。
-
“在C++中也有分配位空间的方法吗?”,是的,但你一次只能分配8个......
-
@LuchianGrigore 并不总是 8;这取决于
CHAR_BIT。 -
@LuchianGrigore s/pedantry/correctness/
标签: c++ memory-management bitset