-----------
[Founction]void *memmove(void *dest, const void *src, size_t n);
void *memcpy(void *dest, const void *src, size_t n);
兩個都是可以複製記憶體空間
但最大的差異就在於
memmove : 可以同一個配置空間上複製;memcpy : 如在同一個配置空間複製則會出現 ERROR;
有人會想說 "當然是用功能限制少的阿!!!"
NoNoNo~~
這可是需要付出代價的
因為 使用 memove的速度 會慢很多~~~~~~~
而memcpy 效率就快很多 因為他直接排除掉 在同一個空間複製的問題
(網路上也有查到原始碼 memmove 發現不是在同一空間複製時 會直接帶入memcpy的founction)
[原始碼]
在這也舉一個 讓人困擾的例子
[案例]
一個配置好的記憶體空間 裡面放滿字串
如果要在中間多加一段字串進來 該如何設計比較快呢
(如果都是一般字串String處理也行拉 暫時先不以這為主 因為也是有可能遇到 不能用的時候)
1.malloc一個足夠的大小 逐次的使用memcpy放入字串
2.重新將原本大空間realloc,以及malloc可以放後半段字串的空間, 使用memcpy直接加進去新字串,再把後半段memcpy回來
3.重新將原本大空間realloc,使用memmove將後半段字串往後移動,空出要加入的 字串空間,再memcpy進來新字串
呵呵 有空可以試看看 到底哪個速度會比較快...
如果你有更快的方法 拜託!!! 一定要告訴我喔!!!!!!!
留言測試!!!
回覆刪除ECHO!
回覆刪除