Aşağıda anlatacağım C fonksiyonları bir memory bloğundaki verileri başka bir memory bloğuna kopyalamak için kullanılmaktadır.
Aşağıda örnek bir kod ve çalışması görülmektedir.
Aşağıda 24 byte kopyalama yapılmıştır. Böylece Null karakter kopyalaması da ptrDest dizisine kopyalanmıştır.
Aşağıdaki örnekte B harfini gönderene kadar ya da maksimum 24 byte kopyalama yapar.
Örnek bir kullanım aşağıdaki gibidir:
Örnek bir memmove kullanımı aşağıdaki gibidir:
Aşağıda memory overlap durumuna bir örnek verilmiştir.
Örnek bir uygulama:
memcpy:
memcpy bir memory bloğundaki bilgiyi diğer memory bloğuna fonksiyona geçirilen 3. parametrede geçen değer kadar byte kopyalaması yapar. memory overlap sorununa karşı korumasız durumdadır. Yani source ve destination memory alanlarında üst üste gelme durumu varsa fonksiyon istenilen çıktıları üretememektedir.Aşağıda örnek bir kod ve çalışması görülmektedir.
memccpy:
memccpy memcpy ile benzer çalışmakta 3. ve 4. parametreler ise 3. parametrede karakter olarak gönderilen değerle karşılaşıncaya kadar kopyalama yapar bulamazsa 4. parametre verilen boyuta kadar kopyalama yapar.
mempcpy:
mempcpy fonksiyonu memcpy ile benzer çalışmakta yalnızca geri dönüş değeri olarak kopyalama işlemi yaptıktan sonra (hedef alana) bir sonraki adresi geri dönüş olarak verir. Bu fonksiyon daha çok birden fazla hafıza alanından birleştirme yaparken kullanılır.
memmove:
memmove memcpy ile benzer yapıdadır. Fakat memory overlap'e karşı önce kaynağı temp bir alana kopyalar ardından hedef olarak verilen yere temp alandan kopyalama yapar. Daha güvenli bir kopyalama sağlar ama memcpy 'ye göre daha yavaştır.
strcpy:
strcpy fonksiyonu ise hedef ve kaynak parametrelerini alır hedefte verilen string'i null karakter görene kadar hedef alana kopyalamaya çalışır. Ya da üçüncü parametre olarak verilen byte kadar kopyalama yapar. Eğer verilen uzunluk dahilinde string içinde Null karakter yoksa kopyalama sonrası hedef alanda sonunda null karakter olmayan bir string olacaktır.
string kopyalama işlemlerinde daha çok strcpy fonksiyonu kullanılmaktadır. Örnek bir uygulama aşağıdaki gibidir:
bcopy:
deprecated olmuş bir fonksiyondur. memcpy ile benze çalışmaktadır. Memory overlap durumuna karşı korumalıdır.