|
|
1
6
为了避免这种情况下的对齐问题,请作为
上面的例子假设了“小端”数据布局,在多字节数中,最低有效字节排在第一位。 |
|
|
2
4
您应该有函数(如果您使用的语言支持这些特性,则为内联函数和/或模板函数),这些函数将读取可能未对齐的数据并返回您感兴趣的数据类型。类似于:
|
|
|
3
4
简单的方法是手动重建
如果你的处理器支持它,你可以输入pun或使用union(但是要注意 strict aliasing ).
请注意,不总是支持未对齐的访问(例如,它们可能会生成某种类型的错误),在其他体系结构上,也支持它们,但会有性能损失。 如果数据包未对齐,则始终可以将其复制到静态缓冲区中,然后读取:
就我个人而言,我会选择1号,因为它是最便携的。 |
|
|
4
1
如果通过一个字节指针,对齐总是很好的,尽管可能不是超级高效的。 抛开尾数问题不谈,您可以将“real”字节指针存储到您想要/需要的、正确对齐的任何内容中,这样就可以了。 (这是因为生成的代码将以字节的形式加载/存储数据,这是对齐安全的)。当生成的程序集有以错误的方式加载和存储16/32/64位内存的指令时,它就会崩溃。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 11 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 11 月前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |