memcpy内存拷贝的改进与优化
来源:互联网 发布:昆明到大理 汽车 知乎 编辑:程序博客网 时间:2024/05/01 14:14
原版:
void *memcpy( void *dest, const void *src, size_t count ){ASSERT((dest != NULL)&&(src != NULL));char *temp_dest = (char *)dest;char *temp_src = (char *)src;while(count--)// 不对是否存在重叠区域进行判断{*temp_dest++ = *temp_src++;}return dest;}
改进一:
void* memcpy(void* dest, void* source, size_t count) { void* ret = dest; if (dest <= source || dest >= (source + count)) { //Non-Overlapping Buffers //copy from lower addresses to higher addresses while (count --) *dest++ = *source++; } else { //Overlapping Buffers //copy from higher addresses to lower addresses dest += count - 1; source += count - 1; while (count--) *dest-- = *source--;l } return ret; }
改进二:
void memcpy(void* dest, const void* src, size_t n){ assert((((uintptr_t) dest | (uintptr_t) src | n) & 0x03) == 0); uint32_t* d = (uint32_t*) dest; const uint32_t* s = (uint32_t*) src; n /= sizeof(uint32_t); if (d < s) { /* copy forward */ while (n--) { *d++ = *s++; } } else { /* copy backward */ d += n; s += n; while (n--) { *--d = *--s; } }}
- memcpy内存拷贝的改进与优化
- memcpy内存拷贝的改进与优化 (转)
- 内存拷贝memcpy与strcpy的异同
- 字符串拷贝与内存拷贝的区别 c语言--memcpy()
- memcpy内存拷贝及优化策略图解
- C语言中字符串拷贝(strcpy)与内存拷贝(memcpy)的实现
- C中字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- C语言中的字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
- 比memcpy更好的内存拷贝方法
- memcpy不能拷贝不连续的内存
- 比memcpy更快的内存拷贝
- 比memcpy更快的内存拷贝
- 比memcpy更快的内存拷贝
- 内存拷贝函数(memcpy)的深入思考
- memcpy如何优化拷贝
- memcpy() -- 拷贝内存内容
- memcpy() -- 拷贝内存内容
- memcpy() -- 拷贝内存内容
- 由于连接多个数据库导致的TABLENAME无效,解决方法
- 移动汉诺塔(6)
- 2012.1.1 程序调试
- 常量指针和指针常量(const)
- Webkit JNI study notes
- memcpy内存拷贝的改进与优化
- 第一篇……
- 使用JList
- WebSocket不同版本的三种握手方式以及一个Netty实现JAVA类
- Scroll Panes的使用
- 值调用和引用调用(7)
- C语言之万年历
- win7下Excel2003/2010 同时打开多个独立窗口
- 苹果亚马逊领衔2011年五大最受尊敬技术公司