Hyp*_*eus 2 c pointers memory-alignment word-boundaries
我在文件中有一些二进制数据,并将文件加载到内存中char* data.现在我知道,例如在偏移123处开始a struct something.
执行以下操作是否安全
(struct something*) (data + 123) // ??&data [123]??
然后访问结构的成员.或者我应该做些什么
struct something record;
memcpy (&record, data + 123, sizeof (struct something) );
甚至是完全不同的东西?
我的问题主要是因为我对"记忆对齐","词边界"等有一些模糊的回忆......
是的,您应该使用memcpy而不是指针转换,因为您正在讨论的原因是:对齐.转换指针并不安全.如果对齐错误,C标准不保证使用结果指针时的行为.
在某些情况下,另一种方法是将数据直接读入对象.