memcpy函式實現

2021-07-25 10:50:07 字數 864 閱讀 6832

1.原型:void *memcpy(void *dest, const void *src,size_t size); 

標頭檔案:#include ; 

功能:由src所指記憶體區域複製size個位元組到dest所指記憶體區域。 

memcpy()時就需要考慮位址

重疊的情況。

2. 記憶體布局情況:

(1)源位址和目的位址不重疊;

low--------------->high(大端模式)

src|------------|

|-----------|                |------------|

dest                         dest

(2)源位址和目的位址重疊;

src|---------------------|

|---------------------|

dest

3. 實現:

如果沒有重疊,直接從源位址的開始方向複製;如果目標位址在源區域內(dest>src && dest從源位址的末尾開始反方

向複製。

4.原始碼:

#include

#include

#include

void *my_memcpy(void *dest, const void *src, size_t size)

//目的位址和源位址重疊,從源位址的末尾方向開始拷貝

if((src < dest) && (char *)src + size > (char *)dest) }

//目的位址和源位址不重疊,從源位址的開始方向拷貝

else}

return dest;

}

memcpy 函式實現

memcpy函式的作用 將由src指向位址為起始位址的連續n個位元組的資料複製到以dest指向位址為起始位址的空間內,函式返回乙個指向dest的指標。想必大多數人在面試時被要求寫 memcpy的實現,很不幸,我也吃過這個虧 這種題要是寫的一塌糊塗後面完全沒戲 所以還是得提前準備一下,不然就只能呵呵了...

memcpy函式的實現

前段時間去面試自己比較喜歡的乙個工作,面試的哥們讓我實現void memcpy void to,const void from,size t count 這個函式。沒做出來,掛了。感到非常不爽。回來研究了一下。找著了幾個不同版的實現,貼出來。首先對這個函式做一些說明。include void mem...

memcpy的函式內部實現

memcpy和memmove函式的實現,需要注意memmove的覆蓋問題,還有指標型別需要考慮。下面的例子中,先給出了錯誤的例子,而後給出了正確的例子,引以為戒!區別 兩個函式都是進行n位元組記憶體內容的拷貝,入口引數和返回引數也都一樣,可是這兩個函式在內部實現上是有一定區別的,這主要是因為dest...