`
eriol
  • 浏览: 401030 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

memcpy, memccpy和memmove

    博客分类:
  • C++
阅读更多

memcpy

 

声明:void *memcpy(void *dest, const void *src, size_t n)

返回值:返回指向dest的指针。

作用:memcpy()用来拷贝src所指的内存内容前n个字节到dest所指的内存地址上。与strcpy()不同的是,memcpy()会完整的复制n个字节,不会因为遇到字符串结束'\0'而结束。

 

 

memccpy

 

声明:void *memccpy(void *dest, const void *src, int c, size_t n);

返回值:返回指向src中值为c的下一个字节指针。返回值为0表示在src所指内存前n个字节中没有值为c的字节。

作用:memccpy()用来拷贝src所指的内存内容前n个字节到dest所指的地址上。与memcpy()不同的是,memccpy()如果在src中遇到某个特定值(int c)立即停止复制。

 

 

memmove

 

声明:void *memmove(void *dest, const void *src, size_t n);

返回值:返回指向dest指针。

作用:memmove()是从一个缓冲区移动到另一个缓冲区中。 

 

 

它们之间的区别

 

memmove()与memcpy()一样都是用来拷贝src所指的内存内容前n个字节到dest所指的地址上。

不同的是,当src和dest所指的内存区域重叠时,memmove()仍然可以正确的处理。不过执行效率上会比使用memcpy()略慢些。

 

memccpy()与memcpy的区别在于memccpy()可以在遇到某个特定值时立即停止复制。

 

 

总结

 

对于库函数来说,由于没有办法知道传递给它的内存区域的情况,所以应该使用memmove()函数。通过这个函数,可以保证不会出现任何内存块重叠问题。而对于应用程序来说,因为代码“知道”两个内存块不会重叠,所以可以安全地使用memcpy()函数。

分享到:
评论

相关推荐

    memmove、memcpy和memccpy简介.docx

    。。。

    C语言函数库函数详细介绍手册

    memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi ...

    C 语言库函数使用手册

    memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi ...

    C语言库函数速查 CHM

    memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi ...

    C语言函数速查手册

    memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi ...

    C语言函数速查

    memccpy memchr memcmp memcpy memicmp memmove memset movmem setmem stpcpy strcat strchr strcmp strcmpi strcpy strcspn strdup stricmp strlen strlwr strncat strncmp strncmpi ...

    42_libft

    ft生成文件 生成文件库 Makefile测试功能:libc函数: ft_memset ft_bzero ft_memcpy ft_memccpy ft_memmove ft_memchr ft_memcmp ft_strlen ft_isalpha ft_isdigit ft_isalnum ft_isascii ft_isprint ft_toupper ft...

    libft:libft 42项目

    ft_memcpy ft_memccpy ft_memmove ft_memchr ft_memcmp ft_strlen ft_isalpha ft_isdigit ft_isalnum ft_isascii ft_isprint ft_toupper ft_tolower ft_strchr ft_strrchr ft_strncmp ft_strlcpy ...

    libft:ft_library

    ft_memcpy 13. ft_strncat 23. ft_isdigit 4. ft_memccpy 14. ft_strlcat 24. ft_isalnum 5. ft_memmove 15. ft_strchr 25. ft_isascii 6. ft_memchr 16. ft_strrchr 26. ft_isprint 7. ft_memcmp 17....

    42Cursus:42Cursus42Lisboa

    [确定] [确定] [确定] ft_memccpy:[确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] ft_memmove:[确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] [确定] ...

    C标准库源代码(学习C/C++必备)

    C 标准库源代码\MEMMOVE.C C标准库源代码\MEMORY C标准库源代码\MEMORY.H C标准库源代码\MEMSET.C C标准库源代码\MERR.C C标准库源代码\MINMAX.H C标准库源代码\MKDIR.C C 标准库源代码\MKTEMP.C C标准库源代码\...

    linux_c API函数大全

    memccpy(拷贝内存内容) 37 5.6 38 memchr(在某一内存范围中查找一特定字符) 38 5.7 38 memcmp(比较内存内容) 38 5.8 39 memcpy(拷贝内存内容) 39 5.9 40 memmove(拷贝内存内容) 40 5.10 40 memset(将一段...

Global site tag (gtag.js) - Google Analytics