Встречается на собеседованиях • сегодня

В чем разница между memcpy и memmove в C

memcpy и memmove оба копируют данные из одного буфера в другой, но различаются в обработке перекрывающихся областей памяти.

  • memcpy просто копирует байты из src в dest без проверки на overlap (перекрытие). Если области перекрываются, поведение не определено (UB).
  • memmove корректно обрабатывает overlap, проверяя направление копирования (если dest находится внутри src, копирует с конца).

Пример:

c
char str[] = "123456789";
memcpy(str + 2, str, 5); // UB! Может испортить данные.
memmove(str + 2, str, 5); // Безопасно: "121234589"

Вывод: Используй memmove, если области могут перекрываться, иначе memcpy (он обычно быстрее).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы