我需要你帮助理解memset行为.
char *data = malloc(40);
memset(data,1,40);
Run Code Online (Sandbox Code Playgroud)
当我看到数据内容时,它是010101010101010直到大小结束.然后我改为这个.
memset(data,~0,40);
Run Code Online (Sandbox Code Playgroud)
我看到正确的内容为11111111直到结束.将值设置为1和~0之间的区别是什么.谢谢你的时间.
memset使用您指定的值填充提供的内存区域的每个字节.请注意,仅使用最后一个参数的最低有效字节来填充内存块(即使其类型为int).
在第一种情况下,这个字节是0x01,而在第二种情况下,它是0xFF(全部为1).这就是你观察这种差异的原因.