下面是一个使用C语言编写的内存拷贝函数的示例,它可以将一个内存区域中的数据复制到另一个指定的内存区域。
void my_memcpy(void* dest, const void* src, size_t n)
{
char* pDest = (char*)dest;
const char* pSrc = (const char*)src;
for (size_t i = 0; i < n; i++)
{
pDest[i] = pSrc[i];
}
}
在这个函数中,我们将 dest 和 src 的类型都转换为 char* 类型,以便以字节为单位进行操作。然后,使用一个循环来逐个字节地从源内存区域复制到目标内存区域,直到复制完指定的字节数 n。
要使用该函数,只需将要复制的源内存区域的起始地址作为第一个参数,目标内存区域的起始地址作为第二个参数,以及要复制的字节数作为第三个参数。例如:
int main()
{
int src[] = {1, 2, 3, 4, 5};
int dest[5];
size_t numBytes = sizeof(src);
my_memcpy(dest, src, numBytes);
for (size_t i = 0; i < numBytes / sizeof(int); i++)
{
printf("%d ", dest[i]);
}
return 0;
}
在上面的示例中,我们创建了一个整数数组 src,并将其内容复制到了另一个整数数组 dest 中。然后,我们使用 my_memcpy 函数将 src 中的数据复制到 dest 中,并最后在控制台上打印了 dest 数组的内容。
请注意,在实际使用中,应该确保源和目标内存区域的大小足够,并且不会发生溢出或越界访问。此示例仅用于说明目的。