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