您的位置:首页 > 其它

void* memcpy(void* dst, const void* src, int size)

2015-03-18 10:12 399 查看
#include <string.h>

void *memcpy(void *to, const void *from, size_t count)

函数memcpy()从from指向的数组向to指向的数组复制count个字符。如果两数组重叠,不定义函数的行为。

在C99中,to和from由restrict修饰。

先来看看微软的实现:

void * __cdecl memcpy (

void * dst,

const void * src,

size_t count

)

{

void * ret = dst;

#if defined (_M_IA64)

{

extern void RtlMoveMemory( void *, const void *, size_t count );

RtlMoveMemory( dst, src, count );

}

#else

while (count--) {

*(char *)dst = *(char *)src;

dst = (char *)dst + 1;

src = (char *)src + 1;

}

#endif

return(ret);

}

再来看看coreutils中的实现:

void *

memcpy (void *destaddr, void const *srcaddr, size_t len)

{

char *dest = destaddr;

char const *src = srcaddr;

while (len-- > 0)

*dest++ = *src++;

return destaddr;

}

再来看Linux中实现:

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

{

char *tmp = dest;

const char *s = src;

while (count--)

*tmp++ = *s++;

return dest;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐