【发布时间】:2015-11-06 06:58:50
【问题描述】:
另一个问题的答案:Strict aliasing rule and 'char *' pointers 表示使用char* 检查T 对象的二进制内容是可以的。但是使用T* 覆盖字符缓冲区是不行的。
现在我有一个函数,它采用二进制数据的 char 缓冲区。并在阅读时做这样的事情:
// unsigned char *pData used to walk through the buffer.
uint32_t value = *(unit32_t*)pData;
pData += 4;
如果我这样做打破了严格的别名,还有什么其他更有效的方法可用?当使用少量字节调用 memcpy 调用时,编译器会优化它们吗?
【问题讨论】:
-
是的,只需使用
memcpy(),它是大多数现代(
标签: c strict-aliasing