如何对布尔数组进行内存设置

How to memset an array of bools?

本文关键字:内存 设置 数组 布尔      更新时间:2023-10-16
void *memset(void *dest, int c, size_t count)

第三个参数是数组中的字符数或字节数。你会如何对布尔数组进行内存,比如bool bArray[11]?

MSDN 说:"安全说明 - 确保目标缓冲区有足够的空间至少容纳计数字符。

std::fill()应尽可能使用memset()

std::fill(std::begin(bArray), std::end(bArray), value);

如果bArray是指针,则应使用以下方法:

std::fill(bArray, bArray + arraySize, value);
memset(buffer_start, value, sizeof(bool) * number_of_bools);
//Array declaration
bool arr[10];
//To initialize all the elements to true
memset(arr,1,sizeof(arr));

同样,您可以通过将 1 替换为 0 来将所有元素初始化为 false。

内存集以字节的倍数设置内存。因此,唯一的方法是向布尔指针添加填充,使其长度是 8 的倍数。然后做记忆。就个人而言,如果除了放置冗余填充之外还有其他选择,我更喜欢。但到目前为止,我还没有找到任何替代解决方案。

就像这个例子:

    bool primes[MAX];
    memset(primes,true,sizeof(bool) * MAX);

要使用 memset 将 11 个布尔元素的数组设置为 true:

const int N = 11;
bool arr[N];
memset(arr, 1, sizeof(bool) * N);