Вопрос

Я прочитал заголовки функций, но я все еще не уверен, в чем именно разница с точки зрения вариантов использования.

Это было полезно?

Решение

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

Пример:

memset(str, '*', 50);   

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

memcpy(str2, str1, 50); 

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

Другие советы

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|
* +-+-+-+-+
*/

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

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

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

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

заполнение набора данных память с постоянным байтом

void *memset(void *s, int c, size_t n);

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

memcpy копирует память площадь

void *memcpy(void * dest, const void *src, size_t n);

Ссылка memcpy ( память ) набор воспоминаний

memcpy() копирует из одного места в другое. memset() просто устанавливает все фрагменты памяти одинаковыми.

Например, здесь задается длина строки string в * (или любой другой второй аргумент memset).

memset(str, '*', strlen(str)+1);   

Здесь копируется длина строки string src в dest.

memcpy(dest, src, strlen(src)+1);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top