void* my_memcpy_opt(void* dest, const void* src, size_t n) {
if (!dest || !src) return NULL;
// 先按4字节块复制
unsigned long* d_long = (unsigned long*)dest;
const unsigned long* s_long = (const unsigned long*)src;
while (n >= sizeof(unsigned long)) {
*d_long++ = *s_long++;
n -= sizeof(unsigned long);
}
// 处理不足4字节的部分
unsigned char* d_char = (unsigned char*)d_long;
const unsigned char* s_char = (const unsigned char*)s_long;
while (n--) {
*d_char++ = *s_char++;
}
return dest;
}
|