我无法完全理解我在这里读到的内容的后果:将 int 指针转换为 char ptr,反之亦然
简而言之,这行得通吗?
set4Bytes(unsigned char* buffer) {
const uint32_t MASK = 0xffffffff;
if ((uintmax_t)buffer % 4) {//misaligned
for (int i = 0; i < 4; i++) {
buffer[i] = 0xff;
}
} else {//4-byte alignment
*((uint32_t*) buffer) = MASK;
}
}
Edit
关于指针应该转换为什么类型以检查对齐情况,有一个很长的讨论(在评论中,但神秘地被删除了)。现在这个话题已经解决了here.
如果您在所有内容中填写相同的值,则此转换是安全的4 bytes. If byte order
重要的是,这种转换并不安全。
因为当你用整数来填充时4 Bytes一次它会充满4 Bytes
但顺序取决于字节顺序.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)