Arduino memcpy et memmove

Ammar Ali 12 octobre 2023
  1. Copier un bloc de mémoire à l’aide de la fonction memcpy() dans Arduino
  2. Copier un bloc de mémoire à l’aide de la fonction memmove() dans Arduino
Arduino memcpy et memmove

Ce tutoriel expliquera comment copier un bloc de mémoire d’une variable à une autre en utilisant les fonctions memcpy() et memmove().

Copier un bloc de mémoire à l’aide de la fonction memcpy() dans Arduino

Si vous souhaitez copier le contenu d’une variable dans une autre, vous pouvez le faire facilement en utilisant la fonction memcpy(). Cette fonction prend trois arguments d’entrée. Le premier argument est la variable dans laquelle vous souhaitez coller les données. Le deuxième paramètre est la variable à partir de laquelle vous souhaitez copier des données. Le troisième paramètre est le nombre d'octets que vous devez copier à partir de la deuxième variable. Par exemple, considérons que nous voulons copier des données d’un tableau dans un autre. Consultez l’exemple de code ci-dessous.

int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memcpy(firstArray, secondArray, sizeof(secondArray)); }

Dans le code ci-dessus, nous avons copié toutes les données présentes dans la variable secondArray dans la variable firstArray. Notez que vous pouvez modifier le nombre d’octets que vous souhaitez copier dans le troisième argument. Cette fonction ne vérifie pas le débordement et vous ne recevrez pas la sortie requise si les adresses des deux variables se chevauchent. Ainsi, au lieu d’utiliser cette fonction, vous pouvez utiliser la fonction memmove().

Copier un bloc de mémoire à l’aide de la fonction memmove() dans Arduino

La fonction memcpy() crée des problèmes en cas de débordement ou dans le cas des mêmes adresses mémoire. Vous pouvez utiliser la fonction memmove() au lieu de la fonction memcpy() pour résoudre les problèmes ci-dessus. La fonction memmove() effectue la même tâche que la fonction memcpy() mais ignore le débordement. Cela résoudra donc de nombreux problèmes. Pensez à résoudre le même exemple que ci-dessus avec la fonction memmove().

int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memmove(firstArray, secondArray, sizeof(secondArray)); }

Dans les deux exemples ci-dessus, le résultat sera le même, mais vous pouvez utiliser la fonction memmove() pour éliminer les risques d’erreur.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook