C語言中memcpy用法的注意點

2021-09-11 09:10:15 字數 479 閱讀 5544

程式設計使用memcpy(a, b, num)出現斷言,後研究發現memecpy()函式在使用時要求a,b引數不為null,後進行修改,問題解決。

1.判斷輸入指標是否為null。(長度可判可不判,因為長度如果<0,後面**也能處理)

2.考慮記憶體是否重疊問題。

記憶體是否重疊問題,即當dst是src的後半部分時,對dst的copy會導致原src後半部分被覆蓋,後續的拷貝會出錯。(其實linux低下memcpy本身是不處理這種情況的,memmove函式才會考慮記憶體重疊問題,所以用memcpy函式時,安全性要程式設計師來保證,參考

記憶體重疊需倒序拷貝。

3.高效性。32位匯流排可以每次複製乙個int,64位匯流排可以一次性複製long long。所以要分成int和char型別來處理,優先int型處理方式。不過要注意,倒序拷貝時,減1必須轉化為int型別後減1,*(int*)dst = *(int *)src填充的才是最後乙個int。

參考:1.

2.

C語言memcpy函式的用法

memcpy是memory copy的縮寫,意為記憶體複製,在寫c語言程式的時候,我們常常會用到它。它的函原型如下 void memcpy void dest,const void src,size t n 它的功能是從src的開始位置拷貝n個位元組的資料到dest。如果dest存在資料,將會被覆蓋...

C語言memcpy函式的用法

memcpy是memory copy的縮寫,意為記憶體複製,在寫c語言程式的時候,我們常常會用到它。它的函原型如下 void memcpy void dest,const void src,size t n 它的功能是從src的開始位置拷貝n個位元組的資料到dest。如果dest存在資料,將會被覆蓋...

C語言中的memcpy與strcpy函式使用

今天給大家介紹一下c語言中的memcpy與strcpy函式使用。首先,這兩個函式都是包含在string.h的標頭檔案中的,因此使用前需要包含標頭檔案string.h。strcpy主要是用於字串的拷貝。函式原型 char strcpy char destination,const char sourc...