[C++]實現memcpy
void memcpy(void *pDst ,void *pSrc ,size_t length)
{
char *dst=static_cast<char*>(pDst); //轉換成char*
char *src=static_cast<char*>(pSrc);
if ((src==nullptr)||(dst==nullptr)) //判斷是否為野指標
{
/* code */
return;
}
//分段討論,判斷dst和區間(src,src+length)的位置關係
//地址不重疊,
//(1)dst<src,dst在src前面,此時即便dst尾部和src的頭部有部分重疊也無所謂,只需要從src的頭部複製到尾部即可
//(2)dst>src+length,只需要從src的頭部複製到尾部即可
if (dst<src || dst>src+length)
{
/* code */
for (int i = 0; i < length; ++i)
{
/* code */
*dst++=*src++;
}
}
else //地址重疊,(3)src <= dst <= src+length,此時需要從尾部開始複製
{
dst=dst+length-1; //定位到尾部
src=src+length-1;
for (int i = length; i >=0 ; i--) //從尾部開始複製
{
/* code */
dst[i]=src[i];
}
}
}
相關文章
- memcpy,memmove的實現memcpy
- memcpymemcpy
- C語言-記憶體函式的實現(一)之memcpyC語言記憶體函式memcpy
- 堆排序(實現c++)排序C++
- 命令模式(c++實現)模式C++
- LinkBlockedQueue的c++實現BloCC++
- 堆排序c++實現排序C++
- c++實現Json庫C++JSON
- 字典樹及其C++實現C++
- 單例模式c++實現單例模式C++
- 享元模式(c++實現)模式C++
- 狀態模式(c++實現)模式C++
- 中介者模式(c++實現)模式C++
- 模板方法模式(c++實現)模式C++
- C++程式設計實現C++程式設計
- 橋接模式(c++實現)橋接模式C++
- FastASR——PaddleSpeech的C++實現ASTC++
- 折半查詢(C++實現)C++
- c++ web框架實現之靜態反射實現C++Web框架反射
- C中memcpy使用注意事項memcpy
- strcpy,strncpy,memcpy,memmove,memset函式memcpy函式
- HTTPS通訊的C++實現HTTPC++
- C++ 實現Golang裡的deferC++Golang
- C++實現Prim演算法C++演算法
- 原型模式的C++實現原型模式C++
- 迴圈佇列C++實現佇列C++
- [C++ & AdaBoost] 傻陳帶你用C++實現AdaBoostC++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- C++筆記——C++基本思想與實現(一)C++筆記
- 用c++實現淨現值的計算C++
- QT:用QWebSocket實現webchannel,實現C++與HTML通訊QTWebC++HTML
- C++定時器CTimer的實現C++定時器
- Android Binder實現示例(C/C++層)AndroidC++
- 27.移除元素(c++方法實現)C++
- c++字串查詢函式實現C++字串函式
- C++ 多型的實現及原理C++多型
- C++ :引用計數(reference count) 實現C++
- OS_程式排程:C++實現C++