Fonctions et différences des fonctions memcpy, memmove, memcmp et memset

1. memcpy et memmove

1、memcpy

Fonction : copiez plusieurs octets de données vers l'arrière depuis l'emplacement de la source vers l'emplacement de la mémoire de destination.

Avis:

  • La fonction memcpy() ne s'arrêtera pas lorsqu'elle rencontrera '\0' (la fonction de copie de chaîne strcpy s'arrêtera lorsqu'elle rencontrera '\0') ;
  • Le contenu pointé par la destination et la source ne peut pas se chevaucher, sinon le résultat souhaité ne peut pas être obtenu.

void* memcpy(void* destination, const void* source,size_t num);
2、memmemove

2、memmemove

Fonction : copiez plusieurs octets de données vers l'arrière à partir de la position de la source et déplacez-les vers l'emplacement mémoire de destination.

Remarque : La différence avec la fonction memcpy() est que le bloc de mémoire d'origine et le bloc de mémoire cible traités par la fonction memmove() peuvent se chevaucher.

void* memmove(void* destination, const void* source,size_t num);

3. La différence entre memove et memcpy et le problème du chevauchement de mémoire

memmove est une version améliorée de memcpy , memmove est plus sécurisé.

Pour plus de détails, voir : [Langage C] Parler de la différence entre memcpy et memmove_Blog de DanteIoVeYou - Blog CSDN


Deux, memcmp

Fonction : Permet de comparer le contenu de deux zones mémoire.

int memcmp(const void * Buf1,const void * Buf2,size_t Size);

buf1 : pointeur sur la première zone mémoire.
buf2 : pointeur vers la deuxième zone mémoire.
size : le nombre d'octets à comparer.

  • Si la valeur de retour < 0, cela signifie que str1 est plus petit que str2.
  • Si la valeur de retour > 0, cela signifie que str1 est supérieur à str2.
  • Si la valeur de retour = 0, cela signifie que str1 est égal à str2.

 


3. jeu de mémoire

Fonction : fonction d'affectation de mémoire, utilisée pour affecter un certain espace mémoire ; incluse dans le fichier d'en-tête < string.h >.
Explication détaillée : Fixez la valeur des n premiers octets de l'espace mémoire alloué s à la valeur c.
Remarque : Cette fonction affecte des valeurs aux tableaux ou aux structures octet par octet.

void *memset(void *s, int v, size_t n)

s  est le nom du tableau, ou un pointeur vers un espace interne,
v  est la valeur à remplir,
n  est le nombre d'octets à remplir,

S'il s'agit d'un tableau de type caractère, memset peut être utilisé avec désinvolture, mais pour un tableau de type int, il n'est généralement utilisé que pour effacer 0 ou remplir -1, s'il est rempli avec d'autres données, une erreur se produira.


4. Contenu de référence

[Langage C] Parler de la différence entre memcpy et memmove_Blog de DanteIoVeYou - Blog CSDN

Langage C memcpy, memmove, memcmp, fonctions memset_Blog de sheygshsi - Blog CSDN

Introduction à C/C++---memset, memcpy, memcmp functions_c/c++ memcpy avec différentes tailles de tableau 

Je suppose que tu aimes

Origine blog.csdn.net/qq_41709234/article/details/132134454
conseillé
Classement