- // 功能:由src所指内存区域复制count个字节到dest所指内存区域。
- // 说明:src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针
- void *memmove(void *dest , const void *src , size_t count)
- {
- assert( (dest != NULL) && (src != NULL)); //安全检查
- assert( count > 0 );
- char *psrc = (char *) src;
- char *pdest = (char *) dest;
- //检查是否有重叠问题
- if( pdest < psrc )
- {
- //正向拷贝
- while( count-- )
- *pdest++ = *psrc++;
- }
- else if( psrc < pdest )
- {
- //反向拷贝
- psrc = psrc + count - 1;
- pdest = pdest + count - 1;
- while( count-- )
- *pdest-- = *psrc--;
- }
- return dest;
- }
- // 功能:由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。
- // 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针
- void *memmcpy(void *dest , const void *src , size_t count)
- {
- assert( (dest != NULL) && (src != NULL)); //安全检查
- assert( count > 0 );
- char *psrc = (char *) src;
- char *pdest = (char *) dest;
- while( count-- )
- *pdest++ = *psrc++;
- return dest;
- }