gpt4 book ai didi

c++ - 将 memset bool 设置为 0 是否安全?

转载 作者:IT老高 更新时间:2023-10-28 12:39:07 25 4
gpt4 key购买 nike

假设我有一些 legacy 代码,除非发现 bug,否则无法更改,并且它包含以下代码:

bool data[32];
memset(data, 0, sizeof(data));

这是将数组中的所有 bool 设置为 false 值的安全方法吗?

更一般地说,将 memset 一个 bool0 以使其值 false 是否安全?

是否保证适用于所有编译器?还是我要求修复?

最佳答案

法律有保障吗?没有。

C++ 对 bool 值的表示只字未提。

现实有保障吗?是的。

我的意思是,如果您希望找到一个不将 bool false 表示为零序列的 C++ 实现,我会祝您好运。假设 false 必须隐式转换为 0,而 true 必须隐式转换为 1,而 0 必须隐式转换为 false,非 0 必须隐式转换为 true ......好吧,你实现起来很愚蠢任何其他方式。

这是否意味着它“安全”由您决定。

我通常不会这么说,但如果我遇到你这种情况,我会很乐意让这件事发生。如果您真的很担心,可以在您的可分发包中添加一个测试可执行文件,以在安装实际项目之前验证每个目标平台上的先决条件。

关于c++ - 将 memset bool 设置为 0 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33380742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com