memcpy和memmove函数的比较与实现
来源:互联网 发布:ocr软件哪个好 编辑:程序博客网 时间:2024/05/18 04:07
文章出处:http://dev.firnow.com/course/3_program/c++/cppjs/20091014/178758.html
从DESCRIPTION看来,两者的功能基本相同,唯一不同的是,当 dest 和 src 有重叠的时候选用不同的函数可能会造成不同的结果。不妨写个小程序来测一下:
很简单的小程序!不过已经足以达到我的目的了:)
将上面代码gcc之后再运行,结果为:0 1 2 3 0 1 2 3 0 1 。
再把第13行改成:memmove(&a[4], a, sizeof(int)*6),重新gcc再运行,结果为:0 1 2 3 0 1 2 3 4 5 !
呵呵,两者的区别出现了。
不过其实这样还不够,继续修改13行: memmove(a, &a[4], sizeof(int)*6) //也就是将源、目的置换一下而已
重新gcc编译再运行,结果为:4 5 6 7 8 9 6 7 8 9 。
还不够,继续修改13行为: memcpy(a, &a[4], sizeof(int)*6); gcc并运行,结果仍为: 4 5 6 7 8 9 6 7 8 9 !
至此真相已经大白了。对比上面四个结果,不难得出以下结论:
1. 当 src 和 dest 所指内存区有重叠时,memmove 相对 memcpy 能提供保证:保证能将 src 所指内存区的前 n 个字节正确的拷贝到 dest 所指内存中;
2. 当 src 地址比 dest 地址低时,两者结果一样。换句话说,memmove 与 memcpy 的区别仅仅体现在 dest 的头部和 src 的尾部有重叠的情况下;
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较与实现
- memcpy和memmove函数的比较
- memcpy和memmove函数的比较
- memcpy函数和memmove函数的模拟实现与区别
- memcpy和memmove函数的实现
- memcpy和memmove函数的实现
- memcpy和memmove的函数内部实现
- memcpy 与memmove的比较
- memcpy和memmove的区别与实现
- memcpy和memmove的区别与实现
- memcpy和memmove的区别与实现
- 实现memcpy和memmove函数
- 实现memcpy( )和memmove( )函数
- 实现memcpy和memmove函数
- memcpy,memmove函数的实现
- GP Raster Server
- 把悲伤留给自己,把蛋疼送给别人
- 关于调用GC释放Office进程的方法
- c++编写字符串分割函数
- ModalDialog页面同时提供上传下载功能
- memcpy和memmove函数的比较与实现
- asp.net c# vs2008打开新页面或页面跳转
- 支付宝面试
- 耗内存应用优化实际案例
- 让更多人用到自己的代码,让信仰在风中飘扬
- (c#)ASP.Net网站如何生成新的标签页
- access vba中的treeview问题,请大家救救我吧!
- C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现方法
- 使用 UML 设计 XML 模式