a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

關于memcpy和memmove的一點重要說明

2020-01-26 14:20:49
字體:
來源:轉載
供稿:網友

今天看到書上降到memcpy和memmove的區別才突然發現原來兩者之間有如此區別,以前只知道這兩個函數是

實現同樣的功能,沒有接觸到其不同。

memcpy和memmove在MSDN的定義如下:

從兩者的聲明來看的確沒有區別,我們來看這樣一個例子

當我們需要將char* src="abcde"這個字符串全部copy到dest中然而src與dest在內存中大概是這樣存在的:

內存地址   低------>高

src   dest1  2  3  4  5   6[ a ][ b ][ c ][ d ][ e ][ '/0' ][ ][ ][ ][ ][ ][ ][ ]

src地址為內存1,目的地址為內存2此時很明顯內存出現了重疊,當我們拷貝字符a到第三個內存位置的時

a將覆蓋src內存中的第三個字符 這種情況在memcpy未定義然而memmove卻給出了正確的處理方式

解決方法,試想當我們先將dest地址移動dest+n-1同時src地址移動src+n-1這樣再從src的最后一個元素開

始逐個向前拷貝到dest中就完美的避免了內存重疊導致的元素覆蓋問題呢

下面我們根據memcpy和memmove給出自己的實現:

#include <iostream>using namespace std;void *memcopy( void *dest, const void *src, size_t count ){  if(dest==NULL||src==NULL)    return NULL;  char* Dest=(char*)dest;  const char* Src=(char*)src;    int i=0;    while(i<count)  {    *Dest++=*Src++;    i++;  }    return dest;}void *memmove(void *dest,const void *src,size_t count ){  if(dest==NULL||src==NULL)    return NULL;  char* Dest=(char*)dest;  const char* Src=(char*)src;    int i=0;  if(src>dest)  {    while(i<count)//正向拷貝    {      *Dest++=*Src++;      i++;    }  }  else  {    Dest=Dest+count-1;//反向拷貝    Src=Src+count-1;    while(i<count)    {      *Dest--=*Src--;      i--;    }  }      return dest;}void main(){  char dest[80];  memset(dest,'/0',80);  char* src="memcpyteststring";  int n;  cout<<"How many char you want to copy from src to dest(memcpy): ";  cin>>n;  cout<<"The dest string is: "<<(char*)memcopy(dest,src,n)<<endl;  cout<<"How many char you want to copy from src to dest(memcpy): ";  cin>>n;  cout<<"The dest string is: "<<(char*)memmove(dest,src,n)<<endl;  return;}

運行截圖:

以上就是小編為大家帶來的關于memcpy和memmove的一點重要說明全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 日韩av在线一区二区 | 欧美国产在线观看 | 婷婷成人在线 | 欧美成人一区二区三区片免费 | 亚洲精品视频三区 | 老司机福利在线视频 | 欧美日韩第一区 | 精品国产欧美一区二区 | 日韩在线精品 | 一区二区在线免费观看 | 青青操av | 亚洲视频一二区 | 中文字幕乱码一区二区三区 | 激情福利视频 | 亚洲国产福利一区 | 91精品综合久久久久久五月天 | 精品国产乱码一区二区三 | 一区二区三区国产 | 欧美一区二区三区电影 | 久久毛片 | 一级久久久久 | 另类二区 | 亚洲精品福利 | 一区二区三区不卡视频 | 久久久久久久亚洲精品 | 黄色三级网 | 中文字幕成人免费视频 | 久久蜜桃视频 | 日韩超碰| 国产亚洲一区二区av | 国产精品久久久久久久久久久新郎 | 久久精品国产亚洲一区二区三区 | 久久国产日韩 | 成人免费网站www网站高清 | 国内精品久久久久 | www.伊人网 | 欧洲毛片基地 | 一区二区av | 91精品国产777在线观看 | 欧美在线xxx | 在线观看国产一区 |