memmove处理内存重叠的情况

xiaoxiao2021-02-28  46

#include<stdio.h> //处理内存重叠 void* memmove(void* des, void* src, size_t count) { if (des == NULL || src == NULL || count <= 0)return des; void* ret = des; char * dest = (char*)des; char* source = (char*)src; if (dest <= source || dest >= (source + count)) { //正向拷贝 //copy from lower addresses to higher addresses while (count--) *dest++ = *source++; } else { //反向拷贝 //copy from higher addresses to lower addresses dest += count - 1; source += count - 1; while (count--) *dest-- = *source--; } return ret; }
转载请注明原文地址: https://www.6miu.com/read-2621690.html

最新回复(0)