首页 > 解决方案 > 为什么在特定情况下需要 memcpy

问题描述

在以下函数中:

void cp (char **x, char ** y) {
    while (*x) {
        * y = malloc(strlen (*x)+1);
        // * y++ = *x++;
        memcpy (*y++, *x++, strlen (*x) + 1);
    }
}

为什么我需要使用memcpy?为什么我不能只使用* y++ = * x++. 当我尝试这样做时,在尝试释放该内存时会出现段错误。

标签: c

解决方案


x并且ychar**s。如果你只是这样做* y++ = * x++,那么你就是让中间指针指向同一个地方,而不是实际将数据从第一个位置复制到第二个位置。


推荐阅读