避免内存重叠的memmove()函数

来源:互联网 发布:关于黑奴的电影知乎 编辑:程序博客网 时间:2024/05/21 09:07
#include <iostream>#include <string.h>using namespace std;void* memmove(void *dst, const void *src, size_t count){// 容错处理if (dst == NULL || src == NULL){return NULL;}unsigned char *pdst = (unsigned char *)dst;const unsigned char *psrc = (const unsigned char *)src;//判断内存是否重叠bool flag1 = (pdst >= psrc && pdst < psrc + count);bool flag2 = (psrc >= pdst && psrc < pdst + count);if (flag1 || flag2){// 倒序拷贝while (count){*(pdst + count - 1) = *(psrc + count - 1);count--;}//while}else{// 拷贝while (count--){*pdst = *psrc;pdst++;psrc++;}//while}return dst;}

0 0
原创粉丝点击