Встречается на собеседованиях • сегодня
В чем разница между 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 (он обычно быстрее).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы