Каково различие между memset и memcpy в C

Самый легкий ответ: не делайте это в коде, но настраивает IIS вместо этого .

17
задан Trevor Hickey 23 November 2015 в 17:56
поделиться

4 ответа

memcpy () копий из одного места в другое. memset () просто устанавливает для всех частей памяти одно и то же значение.

Пример:

memset(str, '*', 50);   

Вышеупомянутая строка устанавливает для первых 50 символов строки str значение * (или любой другой второй аргумент memset ).

memcpy(str2, str1, 50); 

Вышеупомянутая строка копирует первые 50 символов str1 в str2.

42
ответ дан 30 November 2019 в 10:14
поделиться

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|
* +-+-+-+-+
*/
16
ответ дан 30 November 2019 в 10:14
поделиться

memset устанавливает для блока памяти одно значение. memcpy копирует содержимое блока в другой блок.

Возможно, вас заинтересует разница между memcpy и memmove . Оба делают то же самое, но последний работает, даже если источник и место назначения перекрываются.

3
ответ дан 30 November 2019 в 10:14
поделиться

memset () используется для установки всех байтов в блоке памяти на определенное значение char. Memset также хорошо работает только с char , поскольку это его значение инициализации.

memcpy () копирует байты между памятью. Этот тип копируемых данных не имеет значения, он просто делает побайтовые копии.

2
ответ дан 30 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: