Le man de la fonction memmove

🎯 Déplacer des blocs de mémoire, même lorsqu’ils se chevauchent.

⚙️ Prototype de memmove

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

🧑‍💻 Fonctionnement de memmove

La fonction memmove copie n octets de la zone mémoire pointée par src vers la zone mémoire pointée par dest. Contrairement à memcpy, memmove est sécurisée pour copier des zones de mémoire qui se chevauchent. Elle le fait en utilisant une technique qui garantit que le contenu source n’est pas corrompu pendant la copie. Si les zones de mémoire ne se chevauchent pas, memmove fonctionne de manière similaire à memcpy. Le retour de la fonction est un pointeur vers la destination dest.

Paramètres :

  • dest : Pointeur vers la zone de mémoire de destination.
  • src : Pointeur vers la zone de mémoire source.
  • n : Nombre d’octets à copier.

Retour :

Un pointeur vers la zone mémoire de destination dest.

Remarques :

  • memmove est la fonction de choix lorsque les zones source et destination se chevauchent, car elle garantit l’intégrité des données pendant la copie.
  • Attention : Bien que memmove soit plus sûr que memcpy en cas de chevauchement, elle est généralement un peu plus lente en raison de la vérification supplémentaire et de la manipulation des données.
  •  

✨ Exemple d'utilisation de memmove

Déplacement de Données dans un Tableau :

👉 Ici, memmove est utilisé pour déplacer les trois premiers éléments du tableau arr de deux positions vers la droite, ce qui pourrait entraîner un chevauchement. memmove assure que le contenu est déplacé correctement sans perte d’information.

				
					int arr[] = {1, 2, 3, 4, 5};
memmove(arr + 2, arr, 3 * sizeof(int));  // Déplace les 3 premiers éléments de 2 positions vers la droite

for (int i = 0; i < 5; i++) {
    printf("%d ", arr[i]);
}
				
			

Voir aussi :

  • memcpy : Copie un bloc de mémoire à un autre emplacement sans gérer les chevauchements.
  • memset : Remplit une zone de mémoire avec une valeur donnée.
  • memcmp : Compare deux zones de mémoire.
  • strcpy : Copie une chaîne de caractères dans une autre.
  • strncpy : Copie un nombre limité de caractères d’une chaîne dans une autre.

Retour en haut