gpt4 book ai didi

c++ - 为什么我们需要 memset 始终为零?

转载 作者:太空狗 更新时间:2023-10-29 23:23:21 27 4
gpt4 key购买 nike

每当我们使用 memset 时,我们都会将其设置为零。

为什么?为什么不使用 1 或 2 或其他东西。

此外,将结构设置为 0 似乎可行,但设置为 1 则无效:

typedef struct abc{
int a;
} abc;

int main()
{
abc* ab;
memset(ab, 0, sizeof(abc));// it sets abc->a = 0; correct
}

但如果我使用 1 而不是 0,例如:

memset(ab, 1, sizeof(abc));

那么 abc->a = garbage 的值或者不等于 1

为什么?

最佳答案

您并不总是需要将memset 设置为 0,这只是最常见(也是最有用)的事情。

memset 将每个字节 设置为某个给定值。 int 由 4 个字节组成,因此,当 memset 设置为 1 时,您需要将这 4 个中的每一个设置为 1,那么你会得到 00000001 | 00000001| 00000001| 000000012 = 1684300910(第一个数字是二进制,最后一个是十进制)

另请注意,您永远不会为 ab 分配内存。即使您的代码现在可以工作,它也不安全。这将是:

abc ab;
memset(&ab, 0, sizeof(abc));

关于c++ - 为什么我们需要 memset 始终为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018542/

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