在源数据中设置对齐以便最佳加载到内存中?

时间:2017-02-06 04:27:55

标签: c memory-alignment systems-programming

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

如何将数据对齐以获得最佳memcpy

虽然memcpy并不需要对齐,但我注意到它的常见格式是写入填充字节,对齐为4个字节,例如(即使文件'没有内存转储。)

我认为这是因为它对对齐数据的操作速度更快,但我并不确定细节。

对于常见的体系结构,(X86,x64,ARM,PPC),(32/64位),常见的libc实现(glibc,freebsd,microsoft'等等)......是否有一些规则用于对齐数据以获得最佳读数的拇指?

  • 32位系统应该对齐4和64位对齐到8?
  • 或者这是不必要的,对于流行的架构,固定路线足够(4似乎很常见) - 无论它们的位数如何?
  • 或者(理想情况下)应该将数据与每个结构_Alignof对齐?这对于实施来说可能是不切实际的,因为这会因系统而异。
    (使其优于回退到某个固定值以简化阅读/写作)

0 个答案:

没有答案