如何对布尔数组进行内存设置
How to memset an array of bools?
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);
相关文章:
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- C++ 由于类析构函数中的指针设置为 NULL 而导致的内存泄漏
- 如何在 2d 矢量上进行内存设置
- 如何设置指针的内存地址
- C++从 Java 角度设置和映射内存管理
- 在一个步骤中设置结构成员变量的内存利用
- 使用PYBIND11,如何为Array_t对象设置基础内存的所有权
- 内存堆,动态设置阵列
- 在C++中设置节点的内存地址
- 由 strcpy 设置的解除分配字符 * 时内存泄漏?
- 内存有效的加权设置分配,具有中等大小的集合
- 动态创建对象并将其内存设置为 0
- 我已经将虚拟内存设置为20GB,但由于内存不足,代码仍然无法工作
- 验证内存设置为默认值后数组中的更改
- 为什么内存设置在这种情况下会失败
- 如何对布尔数组进行内存设置
- 内存设置一个对象
- 此结构体的生命周期和内存设置
- 将堆内存设置为只读
- 为什么全局结构和成员变量(相同类型)的内存设置为全局不同