如何从比您系统的可寻址粒度更精细的地址开始复制内存?

时间:2015-03-10 03:21:09

标签: c memcpy

我正在考虑memcpy,其中传递的src指针可能是奇数内存地址。这可能吗?如果是的话,可以实施吗?

如果对于我的系统,内存可以在32位(4Byte)块中寻址:

0x00001000
0x00001020
0x00001040
0x00001060

如何从内容以0x00001000开始的数组中途复制五个字节,例如地址0x000010500x00001078包含哪些内容?

memcpy实现是否总是必须逐字节复制?

1 个答案:

答案 0 :(得分:2)

这适用于所有版本的C,所有平台 - 如果memcpy()的参数需要字对齐,C编译器将不符合C标准。

如果你深入了解,如果src和dst是字对齐的话,你会发现memcpy()总是更快,并且需要特殊的技巧来应对更常见的情况。奇数指针,因为那时它需要降低到字节的水平。但这不是您的担心 - 您只需使用该功能并相信它有效。