【发布时间】:2008-11-12 16:33:20
【问题描述】:
我正在尝试存储大量在运行时确定的布尔信息。我想知道最好的方法是什么。
我目前一直在尝试使用以下方式分配内存:
pStatus = malloc((<number of data points>/8) + 1);
认为这会给我足够的工作。然后我可以使用数组表示法中的指针引用每个布尔值:
pStatus[element]
不幸的是,这似乎效果不佳。首先,我很难将内存初始化为整数值0。这可以使用memset() 来完成吗?不过,我认为这不会影响我在尝试访问 pStatus[element] 时崩溃的原因。
我也不完全相信这种方法是最好的方法。我真正想要的本质上是一个反映布尔值状态的巨大位掩码。我错过了什么吗?
【问题讨论】:
-
多大是多大?一百万位,每个字节存储一个只有 1Mb 的内存。当字节工作得更好时,为什么还要乱用比特?
-
我认为目前的cmets有点二等公民。但是,这是这个问题的主题:-P
-
我同意上述评论。仅使用字节数组(无符号字符)会更简单、更快(开发时间和运行时间)。
-
进一步偏离主题:“将评论转换为答案”可能是正确的 SO 功能。
-
啊,在维基百科的字节文章中找到的:在现代系统中,字节通常由 8 位组成,但是,字节的大小可以变化,通常由底层计算机操作系统或硬件。从历史上看,字节的范围从 5 位到 12 位不等。需要引用吗?