16,473
社区成员
发帖
与我相关
我的任务
分享
void * __cdecl memcpy (
void * dst,
const void * src,
size_t count
)
{
void * ret = dst;
#if defined (_M_IA64)
{
__declspec(dllimport)
void RtlCopyMemory( void *, const void *, size_t count );
RtlCopyMemory( dst, src, count );
}
#else /* defined (_M_IA64) */
/*
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
#endif /* defined (_M_IA64) */
return(ret);
}
c库中依然使用的是原始的字节拷贝,在32位系统,完全可以使用INT赋值,而不是字节赋值;在64位编译时,由于不知RtlCopyMemory是如何实现,无法评判,我的看法是,使用循环应该比memcpy快![/quote]
int赋值是循环?void * __cdecl memcpy (
void * dst,
const void * src,
size_t count
)
{
void * ret = dst;
#if defined (_M_IA64)
{
__declspec(dllimport)
void RtlCopyMemory( void *, const void *, size_t count );
RtlCopyMemory( dst, src, count );
}
#else /* defined (_M_IA64) */
/*
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
#endif /* defined (_M_IA64) */
return(ret);
}
c库中依然使用的是原始的字节拷贝,在32位系统,完全可以使用INT赋值,而不是字节赋值;在64位编译时,由于不知RtlCopyMemory是如何实现,无法评判,我的看法是,使用循环应该比memcpy快!