Зачем нужна memcpy в конкретном случае - PullRequest
1 голос
/ 29 сентября 2019

В следующей функции:

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

Почему мне нужно использовать memcpy?Почему я не могу просто использовать * y++ = * x++.Когда я пытаюсь сделать это таким образом, у меня возникает ошибка при попытке освободить эту память.

1 Ответ

2 голосов
/ 29 сентября 2019

x и y равны char** с.Если вы просто делаете * y++ = * x++, тогда промежуточные указатели указывают на одно и то же место, а не копируют данные из первого местоположения во второе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...