C 在源数据中设置对齐以优化内存加载?

C 在源数据中设置对齐以优化内存加载?,c,memory-alignment,systems-programming,C,Memory Alignment,Systems Programming,定义程序读入内存的数据流时(例如,文件格式,但可以是任何其他类型的数据流) 数据应该如何对齐以获得最佳的memcpy 虽然memcpy不需要对齐,但我注意到写入pad字节的格式很常见,例如对齐到4字节(即使文件不是内存转储) 我认为这是因为在对齐的数据上操作更快,但是我不确定细节 对于常见的体系结构(X86、x64、ARM、PPC),(32/64位),在常见的libc实现(glibc、freebsd、微软的……等等)上。。。是否有一些经验法则来调整数据以优化内存读取 32位系统是否应与4位对

定义程序读入内存的数据流时(例如,文件格式,但可以是任何其他类型的数据流)

数据应该如何对齐以获得最佳的
memcpy

虽然
memcpy
不需要对齐,但我注意到写入pad字节的格式很常见,例如对齐到4字节(即使文件不是内存转储)

我认为这是因为在对齐的数据上操作更快,但是我不确定细节


对于常见的体系结构(X86、x64、ARM、PPC),(32/64位),在常见的libc实现(glibc、freebsd、微软的……等等)上。。。是否有一些经验法则来调整数据以优化内存读取

  • 32位系统是否应与4位对齐,64位系统是否应与8位对齐
  • 或者这是不必要的,因为对于流行的体系结构,固定对齐就足够了(4似乎很常见),而不管它们的比特数是多少
  • 或者(理想情况下)数据应该与每个结构对齐
    \u Alignof

    。。。这可能无法实现,因为这在不同的系统中会有所不同。
    (最好回退到某个固定值以简化读/写)