memcpy与memmove的区别
来源:互联网 发布:mac玩游戏卡 编辑:程序博客网 时间:2024/05/16 12:36
我的试验结果是2个函数的执行效果没有区别. vc6sp6 + winxp.
同学查了资料说是和库实现有关, 那么以后一律用memmove, 不用memcpy了.
// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <windows.h>#include <crtdbg.h>void fnTest1();void fnTest2();int main(int argc, char* argv[]){ /** 在网上看到的结论 memcpy与memmove的目的都是将N个字节的源内存地址的内容拷贝到目标内存地址中。 但当源内存和目标内存存在重叠时,memcpy会出现错误,而memmove能正确地实施拷贝 但是我试验的结果, memcpy与memmove地址有重叠时, 正向拷贝和反向拷贝都正确 能举出一种 memcpy与memmove 效果不同的情况么? */ fnTest1(); fnTest2();return 0;}void fnTest1(){ char szBuf[8] = {'0', '1', '2', '3', '4', '5', '6', '7'}; char szBuf2[8] = {'0', '1', '2', '3', '4', '5', '6', '7'}; /// 当src首地址 > dst首地址时, memmove和memcpy效果是相同的, 且都正确 memmove(&szBuf[2], &szBuf[4], 4); /** -szBuf0x0109ff78 "01456767?.y.g"[0x0]0x30 '0'[0x1]0x31 '1'[0x2]0x34 '4'[0x3]0x35 '5'[0x4]0x36 '6'[0x5]0x37 '7'[0x6]0x36 '6'[0x7]0x37 '7' */ memcpy(&szBuf2[2], &szBuf2[4], 4); /** -szBuf20x0109ff70 "0145676701456767?.y.g"[0x0]0x30 '0'[0x1]0x31 '1'[0x2]0x34 '4'[0x3]0x35 '5'[0x4]0x36 '6'[0x5]0x37 '7'[0x6]0x36 '6'[0x7]0x37 '7' */}void fnTest2(){ char szBuf[8] = {'0', '1', '2', '3', '4', '5', '6', '7'}; char szBuf2[8] = {'0', '1', '2', '3', '4', '5', '6', '7'}; /// 当src首地址 < dst首地址时, memmove和memcpy效果是相同的, 且都正确 memmove(&szBuf[4], &szBuf[2], 4); /**-szBuf0x0109ff24 "01232345€.R.g"[0x0]0x30 '0'[0x1]0x31 '1'[0x2]0x32 '2'[0x3]0x33 '3'[0x4]0x32 '2'[0x5]0x33 '3'[0x6]0x34 '4'[0x7]0x35 '5' */ memcpy(&szBuf2[4], &szBuf2[2], 4); /**-szBuf20x0109ff1c "0123234501232345€.R.g"[0x0]0x30 '0'[0x1]0x31 '1'[0x2]0x32 '2'[0x3]0x33 '3'[0x4]0x32 '2'[0x5]0x33 '3'[0x6]0x34 '4'[0x7]0x35 '5' */}
0 0
- memcpy与memmove的区别
- memmove与memcpy的区别
- memcpy与memmove 的区别
- memcpy与memmove的区别
- memcpy与memmove的区别
- memcpy与memmove区别
- memcpy 与 memmove 区别
- memcpy与memmove区别?
- memmove与memcpy区别
- memmove与memcpy区别
- memcpy与memmove区别
- memmove与memcpy区别
- memcpy和memmove的区别与实现
- memcpy与memmove的区别--标记
- memcpy和memmove的区别与实现
- memcpy和memmove的区别与实现
- memcpy与memmove函数的区别
- memcpy和memmove的区别与联系
- datanode/secondarynamenode的那些事
- Python笔记,简略版
- 时间复杂度的几种记号的区别
- CF 319/B Psychos in a Line
- leetcode笔记:Best Time to Buy and Sell Stock
- memcpy与memmove的区别
- 访百度糯米之 Caused by: libcore.io.ErrnoException: open failed: EACCES (P
- [Leetcode]Ugly Number II
- 怎么获得积分啊
- cocos2d-x v3.0 事件派发机制
- # Markdown 语法和 MWeb 写作使用说明
- 机器学习1 基础
- 机器学习2 KNN原理和实现
- java Date与String的转换