gpt4 book ai didi

c - 内存设置行为

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:46 26 4
gpt4 key购买 nike

我需要你的帮助来理解 memset 行为。

char *data = malloc(40);
memset(data,1,40);

当我看到数据内容是 010101010101010 直到大小结束。然后我改成了这个。

memset(data,~0,40);

我看到正确的内容是 11111111 till end 。值设置为 1 和 ~0 之间有什么区别。感谢您的宝贵时间。

最佳答案

memset 用您指定的值填充提供的内存区域的每个字节。请注意,只有最后一个参数的最低有效字节被用来填充内存块(即使它的类型是 int)。

在第一种情况下,这个字节是 0x01,而在第二种情况下,它是 0xFF(全一)。这就是您观察到这种差异的原因。

关于c - 内存设置行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084147/

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