1. memcpy 函数
1.1 函数简介
memcpy 函数为 C 库函数之一,用于内存的拷贝。
- 函数原型:
void* memcpy (void* dest, const void* src, size_t num);
- 所属头文件:<string.h>
- 功能:把
src
所指的内存空间的num
个字节的数据拷贝到dest
所指的内存空间中。- 返回:指向目标内存的指针。
1.2 函数说明
- memcpy 函数支持内存覆盖,且不负责内存覆盖的正确性。当目标内存覆盖于源内存后半部分,即出现某段内存先作为目标内存后又作为源内存,会发生错误数据的拷贝。
- 内存拷贝时,应尽可能以位宽为单位进行拷贝而非以字节为单位拷贝,能够有效提高拷贝效率。
1.3 函数实现
void* memcpy(void* dest, const void* src, size_t num)
{
// 如果两指针指向相同的内存地址,则直接返回即可
if (dest == src)
{
return dest;
}
// 计算出以位宽为单位的个数以及剩余部分的字节数
int word_num = num / sizeof(size_t);
int byte_slice = num % sizeof(size_t);
size_t* wdest = (size_t*)dest;
const size_t* wsrc = (size_t*