Pregunta

He leído las cabeceras de función, pero todavía no estoy seguro de qué es exactamente la diferencia es en términos de casos de uso.

¿Fue útil?

Solución

copias memcpy() de un lugar a otro. memset() justamente establece que todas las piezas de la memoria en el mismo valor.

Ejemplo:

memset(str, '*', 50);   

La línea anterior establece los primeros 50 caracteres de la cadena str a * (o lo que sea segundo argumento de la memset).

memcpy(str2, str1, 50); 

La línea anterior copia los primeros 50 caracteres de str1 a str2.

Otros consejos

memset() establece todos los bytes en el búfer especificado en el mismo valor, las copias memcpy() una secuencia de bytes de otro lugar en la memoria intermedia.

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 establece un bloque de memoria a un solo valor. copias memcpy el contenido de un bloque en otro bloque.

Tal vez usted estaría interesado en la diferencia entre memcpy y memmove. Ambos hacen lo mismo, pero éste funciona incluso si la fuente y el destino se solapan.

memset() se utiliza para configurar todos los bytes en un bloque de memoria a un valor Char particular. También Memset sólo juega bien con char ya que es su valor de inicialización.

copias memcpy() bytes entre la memoria. Este tipo de datos que se copian es irrelevante, sólo hace que el byte por byte copias.

memset llenar memoria con el byte constante

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

El uso de memset es programador puede llenar directamente con la memoria en particular. y los usos memcpy constante vacío puntero a la fuente de la que no se puede cambiar.

memcpy copia del memoria área

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

memcpy            memset

copias memcpy() de un lugar a otro. memset() justamente establece que todas las piezas de la memoria a la misma.

Por ejemplo, aquí establece longitud de la cadena de la cadena str a * (o lo que sea segundo argumento de la memset).

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

A continuación, copia la longitud de la cadena de la cadena src a dest.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top