跳到主要内容

写一个C++函数,完成内存之间的拷贝 ?

参考答案:

在C++中,你可以使用std::memcpy函数来完成内存之间的拷贝。这是一个非常底层的函数,通常用于拷贝内存块。但是,你也可以自己写一个简单的函数来完成这个任务。下面是一个例子:

#include <cstring>  // 包含strlen函数和memcpy函数

void my_memcpy(char* dest, const char* src, size_t count) {
    // 假设dest和src都不为空,且count大于0
    for (size_t i = 0; i < count; ++i) {
        dest[i] = src[i];
    }
}

int main() {
    char src[] = "Hello, World!";
    char dest[20];  // 确保目标数组足够大

    my_memcpy(dest, src, strlen(src) + 1);  // +1是为了拷贝字符串的结束符'\0'

    // 输出目标数组
    for (int i = 0; i < strlen(dest); ++i) {
        std::cout << dest[i];
    }
    std::cout << std::endl;

    return 0;
}

在这个例子中,my_memcpy函数接收一个目标地址dest,一个源地址src,和一个大小count。然后,它使用一个循环来从源地址拷贝count个字节到目标地址。

注意,这个函数没有处理任何错误情况,例如源地址或目标地址为空,或者count为0。在实际使用中,你可能需要添加更多的错误检查和处理。

此外,这个函数只适用于拷贝字符数组。如果你需要拷贝其他类型的内存块,你可能需要修改这个函数以适应你的需求。

另外,这个函数和std::memcpy一样,都不保证处理源地址和目标地址重叠的情况。如果源地址和目标地址可能会重叠,你应该使用std::memmove函数。