memmove 和 memcpy的區別

2021-08-30 04:02:42 字數 639 閱讀 9863

memcpy和memmove()都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,原型分別如下:

void

*memcpy

(void

* dst,

const

void

* src,

size_t  count)

;

void

*memmove

(void

* dst,

const

void

* src,

size_t  count)

;   

他們的作用是一樣的,唯一的區別是,當記憶體發生區域性重疊的時候,memmove保證拷貝的結果是正確的,memcpy不保證拷貝的結果的正確。

第一種情況下,拷貝重疊的區域不會出現問題,內容均可以正確的被拷貝。

第二種情況下,問題出現在右邊的兩個位元組,這兩個位元組的原來的內容首先就被覆蓋了,而且沒有儲存。所以接下來拷貝的時候,拷貝的是已經被覆蓋的內容,顯然這是有問題的。

實際上,memcpy只是memmove的乙個子集。

二者的c語言實現很簡單,有興趣的朋友可以去看看。在實際情況下,這兩個函式都是用彙編實現的。

memmove 和 memcpy的區別

memcpy和memmove 都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,原型分別如下 void memcpy void dst,const void src,size t count void memmove void dst,const void src...

memcpy和memmove的區別

memcpy和memmove的區別 memcpy 和memmove 都是c語言中的庫函式,在標頭檔案string.h中,其原型分別如下 void memcpy void dst,const void src,size t count void memmove void dst,const void ...

memcpy和memmove的區別

memcpy和memmove的區別 memcpy 和memmove 都是c語言中的庫函式,在標頭檔案string.h中,其原型分別如下 void memcpy void dst,const void src,size t count void memmove void dst,const void ...