gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:17 26 4
gpt4 key购买 nike

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

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

0x00001000
0x00001020
0x00001040
0x00001060

如何从内容从 0x00001000 开始的数组的中间复制五个字节,例如地址 0x000010500x00001078 的内容?

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

最佳答案

这在所有版本的 C 和所有平台上都能正常工作 - 如果 memcpy() 的参数需要字对齐,C 编译器将不符合 C 标准。

如果深入了解,您会发现如果 src 和 dst 是字对齐的,memcpy() 总是更快,并且需要特殊技巧来处理更一般的情况,例如奇数指针,因为它需要下降到字节级别。但这不是您的担心 - 您只需使用该功能并相信它会起作用。

关于c - 如何从比系统可寻址粒度更细的地址开始复制内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com