memcpy實現及優化

2021-09-12 23:43:47 字數 640 閱讀 7297

這是一道面試常考題,要注意的是,函式指標為void型別,注意轉換。另一點是兩個指標可能有交集,針對這一點,當dest在src左邊時,從低位向高位複製,反之,從高位向低位倒序複製。另外當size大於dest長度時將報錯。

最簡:void* memcpy(void *dest, void *src, unsigned int size){

if(dest==nullptr||src==nullptr)

return nullptr;

char* tempdest=(char*) dest;

char* tempsrc=(char*) src;

if(dest改進:位址對齊時以cpu字長來拷貝,不對齊時按位元組拷貝

void* memcpy(void *dest, void *src, unsigned int size){

if(dest==nullptr||src==nullptr)

return nullptr;

int* tempdest=(int*) dest;

int* tempsrc=(int*) src;

unsigned int newsize=size/4;

unsigned int slice=size%4;

if(dest第二種方法參考:

DPDK中的memcpy效能優化及思考

引 記憶體拷貝 memcpy 這個操作看似簡單,但長期以來存在很多關於其優化的討論,各種程式語言庫也都有對應實現,而對於memcpy效能評估測試的討論就更多了。那麼如下的memcpy實現到底有什麼問題?void memcpy void dst,const void src,size t n 12 3...

程式設計實現memcpy()

以下內容 面試中如問到memcpy的實現,那就要小心了,這裡有陷阱。先看下標準memcpy 的解釋 注意下面的注釋,對於位址重疊的情況,該函式的行為是未定義的。事實上所說的陷阱也在於此,自己動手實現memcpy 時就需要考慮位址重疊的情況。另外,標準庫也提供了位址重疊時的記憶體拷貝函式 memmov...

memcpy函式實現

1.原型 void memcpy void dest,const void src,size t size 標頭檔案 include 功能 由src所指記憶體區域複製size個位元組到dest所指記憶體區域。memcpy 時就需要考慮位址 重疊的情況。2.記憶體布局情況 1 源位址和目的位址不重疊 ...