Ваш код имеет Неопределенное поведение . Чтобы ответить на ваш вопрос, NO , memcpy
не использует realloc
.
sizeof(buf)
должно быть достаточно для размещения strlen(str)
. Все, что меньше, это крах.
Вывод может быть напечатан как небольшая программа, но в реальном большом коде это вызовет затруднения при отладке ошибок. Измените свой код на,
const char* const str = "abcdefghijklmnopqrstuvwxyz";
char* const buff = (char*)malloc(strlen(str) + 1);
Кроме того, не делайте *buff++
, потому что вы потеряете запись памяти (то, что вы выделили). После malloc()
нужно сделать free(buff)
после окончания использования памяти, иначе это утечка памяти.