- 主题:C语言结构体数据传输和存储,有必要序列化和反序列化吗?
如果是本机使用就不需要啥序列化了,直接传内存数据吧。
比如内核和应用层之间传输的时候,经常就简单地用 memcpy() 复制一下那段内存了事。当然对齐是需要规定好的。
【 在 wjhtingerx 的大作中提到: 】
: 是不是最多把里面多字节成员搞个网络字节序处理一下就行了?
--
FROM 183.253.147.*
这不还是得解决大小端的问题。
【 在 litguy 的大作中提到: 】
: 我们 X86 + AARCH64 互传
: 也没作序列化
: 大小端设置成一致就行
: ...................
--
FROM 183.253.147.*
他可能说的是 pc 寄存器以及 load/store 要求访问的内存地址以 word 为单位对齐。那个是内存地址。不是结构的对齐,虽然也有一些关系。
ARM 现在默认是不检查对齐。效率会差一些。
假如有这样的 c 结构体
struct Example
{
char c;
int i;
}
这个结构体在 x86 底下是 8 个字节大小。就算有些环境下,因为编译参数被弄成了 5 字节。如果大小端也没弄对,在机器间传递数据就更容易出错了。
【 在 JulyClyde 的大作中提到: 】
: 没听说过arm必须对齐啊
--
FROM 183.253.147.*
这太奇葩了吧。。
在上面跑的软件岂不是都要重新编译?
【 在 litguy 的大作中提到: 】
: ARM 主板已经把 CPU 配置成 X86 一致的小端模式了
: 不用自己管这个,直接发送结构体就行了
--
FROM 183.253.147.*