sma*_*man 4 c# byte memory-management boolean sizeof
可能重复:
c#中布尔值的二进制表示形式是什么
根据MSDN文档,sizeof关键字"用于获取非托管类型的字节大小",基元被视为非托管类型.如果我检查sizeof(bool),结果是1.
在我看来,使用布尔值应该只需要一点内存.我错了吗?使用Boolean值实际上需要一个完整的内存字节吗?为什么?
ron*_*chn 12
出于性能原因,它使用整个字节的内存.
如果它只使用一个位,你用其他7位做什么?很少有变量是布尔值,其他变量可能不需要一个位.所以它只对其他布尔人有用.
例如,4字节整数.此外,出于性能原因,许多较大类型需要从适当的字节边界开始.例如,CPU可能不允许您从任何地址开始轻松引用4字节地址(即地址可能需要被4整除).
如果它使用一位内存,意味着其他7位可用于其他布尔值,尝试使用此布尔值会更复杂.因为它不能直接寻址,所以你需要获取字节,然后在测试之前提取该位,如果它是1或0.这意味着更多的指令 - 因此性能更慢.
如果你有许多布尔值,并且你希望它们只使用一点内存EACH,你应该使用a BitArray.这些是单比特的容器.它们就像布尔阵列一样.
| 归档时间: |
|
| 查看次数: |
6027 次 |
| 最近记录: |