完成記憶體之間的拷貝

2021-07-22 20:19:25 字數 656 閱讀 8563

考慮問題是否全面,是否考慮記憶體重疊問題返回void *支援鏈式操作,引數型別是void *以支援任意型別的指標,輸入引數加上const修飾,最好加上assert對輸入輸出指標進行非null判斷。

void*memmove(void*dest, const void*src, size_t count)

assert((src != null)&&(dest !=null));        

char*tmp, *s;   

if(dest <=src)      

tmp = (char*) dest;        

s = (char*) src;          

while(count--)        

*tmp++ = *s++;       

else 

tmp = (char*) dest +count;             

s = (char*) src +count;           

while(count--)             

*--tmp = *--s;            

returndest; 

dest比src低,則可以從s頭開始拷貝; dest比src高,則為了保證s的資料不會被覆蓋,所以要從s的末尾開始拷貝

CUDA記憶體拷貝

1 cudamemcpy cudamalloc 線性記憶體拷貝 1 線性記憶體拷貝 2 cudamalloc void dev a,data size 3 cudamemcpy dev a,host a,data size,cudamemcpyhosttodevice 2 cudamemcpy2d ...

記憶體管理 拷貝

分類 系統容器類 和 自定義類 1 系統容器類 mutablecopy copy 分別遵循nscopying 和 nsmutablecopy 協議,需要對應實現 copywithzone 和 mutablecopywithzone 方法 2 自定義類 實現 copywithzone 和 mutabl...

CUDA記憶體拷貝

1 cudamemcpy cudamalloc 線性記憶體拷貝 1 線性記憶體拷貝 2 cudamalloc void dev a,data size 3 cudamemcpy dev a,host a,data size,cudamemcpyhosttodevice 2 cudamemcpy2d ...