我正在考虑memcpy
,其中传递的src
指针可能是奇数内存地址。这可能吗?如果是的话,可以实施吗?
如果对于我的系统,内存可以在32位(4Byte)块中寻址:
0x00001000
0x00001020
0x00001040
0x00001060
如何从内容以0x00001000
开始的数组中途复制五个字节,例如地址0x00001050
到0x00001078
包含哪些内容?
memcpy
实现是否总是必须逐字节复制?
答案 0 :(得分:2)
这适用于所有版本的C,所有平台 - 如果memcpy()的参数需要字对齐,C编译器将不符合C标准。
如果你深入了解,如果src和dst是字对齐的话,你会发现memcpy()总是更快,并且需要特殊的技巧来应对更常见的情况。奇数指针,因为那时它需要降低到字节的水平。但这不是您的担心 - 您只需使用该功能并相信它有效。