关于memcpy
来源:互联网 发布:淘宝拍卖手表骗局揭秘 编辑:程序博客网 时间:2024/04/26 20:22
好吧,memcpy,我又把你忘记
普通版memcpy实现
void* memcpy( void* dest, const void* src, size_t count )
{
if (count<0)
{printf("Invalid count number !./n");
return (void*)0;}
if(src==NULL||dest==NULL)
return (void*)0 ;
if ((unsigned int)dest==(unsigned int)src)
{printf("The source is equal with the destanation!./n");
return dest;}
char* d = (char*)dest;
const char* s = (const char*)src;
while(count--)
*d++ = *s++;
return dest;
}
文艺版memcpy实现
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
assert((pvTo != NULL) && (pvFrom != NULL)); // 使用断言
byte *pbTo = (byte *) pvTo; // 防止改变pvTo的地址
byte *pbFrom = (byte *) pvFrom; // 防止改变pvFrom的地址
while(size -- > 0 )
*pbTo ++ = *pbFrom ++ ;
return pvTo;
}
嗯,来自高质量C++/C编程指南。byte是unsigned char?原书没再提过。XX版memcpy实现
void* mymemcpy( void* dest, const void* src, size_t count )
{
char* d = (char*)dest;
const char* s = (const char*)src;
int n = (count + 7) / 8; // count > 0 assumed 没有检查count为0的情况
switch( count & 7 )
{
case 0: do { *d++ = *s++;
case 7: *d++ = *s++;
case 6: *d++ = *s++;
case 5: *d++ = *s++;
case 4: *d++ = *s++;
case 3: *d++ = *s++;
case 2: *d++ = *s++;
case 1: *d++ = *s++;
} while (--n > 0);
}
return dest;
}
- 关于memcpy
- 关于memcpy
- 关于memcpy的用法
- 关于memcpy函数
- 关于memcpy函数探讨
- 关于strcpy和memcpy
- 关于memcpy函数
- 关于 memcpy 函数
- 关于memcpy的用法
- 关于MEMCPY的BUG
- 13.关于memcpy
- 关于memcpy与cvsaveimage/cvloadimage
- 关于memcpy、memove的故事
- 关于memset,memcpy的用法
- 关于不同类型之间使用memcpy
- 关于memcpy的调试理解
- memcpy
- memcpy
- php的常量定义:const VS define
- sed
- 编译boost.python库
- 关于Ognl一点警示
- Angel工作室精简版企业网站管理系统
- 关于memcpy
- gdb常用命令
- C语言变参的实现
- 自己实现RMI(六)压缩与解压
- 2012-08-29
- Cloudra Hadoop 发行版 (CDH4)
- php静态变量的妙用
- 【iphone开发】设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- Android ListView图片异步加载显示