Я прочитал заголовки функций, но я все еще не уверен, что именно разница в плане использования.
В чем разница между memset и memcpy в C
Ответ 1
memcpy()
копии из одного места в другое. memset()
просто устанавливает все части памяти в одно и то же значение.
Пример:
memset(str, '*', 50);
Вышеприведенная строка устанавливает первые 50 символов строки str в * (или любой второй аргумент memset).
memcpy(str2, str1, 50);
Вышеприведенная строка копирует первые 50 символов str1 в str2.
Ответ 2
memset()
устанавливает все байты в указанном буфере на одно и то же значение, memcpy()
копирует последовательность байтов из другого места в буфер.
char a[4];
memset(a, 7, sizeof(char)*4);
/*
* a is now...
*
* +-+-+-+-+
* |7|7|7|7|
* +-+-+-+-+
*/
char b[] = {1,2,3,4};
char c[4];
memcpy(c, b, sizeof(char)*4);
/*
* c is now...
*
* +-+-+-+-+
* |1|2|3|4|
* +-+-+-+-+
*/
Ответ 3
memset
устанавливает блок памяти в одно значение. memcpy
копирует содержимое блока в другой блок.
Возможно, вас заинтересовала бы разница между memcpy
и memmove
. Оба делают то же самое, но последнее работает, даже если источник и место назначения перекрываются.
Ответ 4
memset()
используется для установки всех байтов в блоке памяти на определенное значение char. Memset также хорошо работает с char
, поскольку это его значение инициализации.
memcpy()
копирует байты между памятью. Этот тип данных, которые копируются, не имеет значения, он просто создает байтовые байты.
Ответ 5
memcpy()
копии из одного места в другое. memset()
просто устанавливает все части памяти в один и тот же.
Например, здесь задается длина строки строки str в * (или какой-либо второй аргумент memset).
memset(str, '*', strlen(str)+1);
Здесь копирует длину строки строки src в dest.
memcpy(dest, src, strlen(src)+1);
Ответ 6
memset заполняет память с помощью константного байта
void * memset (void * s, int c, size_t n);
Использование memset - это программист, который может непосредственно заполнять память. и memcpy использует постоянный указатель void для источника, который не может быть изменен.
memcpy скопируйте область памяти
void * memcpy (void * dest, const void * src, size_t n);