Question

J'ai lu les en-têtes de fonction, mais je ne suis toujours pas sûr exactement ce que la différence est en termes de cas d'utilisation.

Était-ce utile?

La solution

copies memcpy() d'un endroit à l'autre. memset() définit simplement tous les morceaux de mémoire à la même valeur.

Exemple:

memset(str, '*', 50);   

La ligne ci-dessus définit les 50 premiers caractères de la chaîne str à * (ou ce second argument du memset).

memcpy(str2, str1, 50); 

Les copies de la ligne au-dessus des 50 premiers caractères du str1 à str2.

Autres conseils

memset() définit tous les octets dans le tampon spécifié à la même valeur, des copies de memcpy() une séquence d'octets d'un autre endroit dans la mémoire tampon.

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 définit un bloc de mémoire à une seule valeur. copies memcpy le contenu d'un bloc dans un autre bloc.

Peut-être que vous seriez intéressé par la différence entre memcpy et memmove. Les deux font la même chose, mais celui-ci fonctionne même si la source et le chevauchement de destination.

memset() est utilisé pour définir tous les octets dans un bloc de mémoire à une valeur char particulier. Memset joue aussi bien qu'avec char car il est sa valeur d'initialisation.

copies memcpy() octets entre la mémoire. Ce type de données copiées est hors de propos, il est tout simplement des copies octet par octet.

memset remplir mémoire avec octet constant

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

Utilisation de memset est programmeur peut directement remplir la mémoire avec en particulier. et les utilisations memcpy constante pointeur vide à la source qui ne peut pas être modifiée.

memcpy copie mémoire zone

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

Référence memcpy            memset

copies memcpy() d'un endroit à l'autre. memset() définit simplement tous les morceaux de mémoire au même.

Par exemple définit ici la longueur de chaîne de la chaîne str * (ou quel que soit le deuxième argument de la memset).

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

Ici copie la longueur de la chaîne de la chaîne src dest.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top