MEMCPY - Linux手册页
时间:2019-08-20 18:00:52 来源:igfitidea点击:
Linux程序员手册 第3部分
更新日期: 2017-09-15
名称
memcpy-复制存储区
语法
#include <string.h> void *memcpy(void *dest, const void *src, size_t n);
说明
memcpy()函数将n个字节从存储区src复制到存储区dest。存储区域不得重叠。如果内存区域确实重叠,请使用memmove(3)。
返回值
memcpy()函数返回一个指向dest的指针。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
memcpy() | Thread safety | MT-Safe |
遵循规范
POSIX.1-2001,POSIX.1-2008,C89,C99,SVr4、4.3BSD。
备注
未能遵守存储区域不重叠的要求一直是造成重大错误的根源。 (POSIX和C标准明确指出,使用具有重叠区域的memcpy()会产生未定义的行为。)最值得注意的是,在glibc 2.13中,某些平台(包括x86-64)上的memcpy()性能优化包括更改字节顺序从src复制到了dest。
此更改显示了执行重叠区域复制的许多应用程序中的损坏。在以前的实现中,字节的复制顺序偶然地隐藏了该错误,当复制顺序相反时,该错误就会显示出来。在glibc 2.14中,添加了版本控制符号,以便旧的二进制文件(即,与2.14之前的glibc版本链接的二进制文件)采用memcpy()实现,可以安全处理重叠缓冲区情况(通过提供"较旧"的memcpy()实现)被别名为memmove(3))。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。