考慮問題是否全面,是否考慮記憶體重疊問題返回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 ...