Arduino memcpy et memmove
-
Copier un bloc de mémoire à l’aide de la fonction
memcpy()
dans Arduino -
Copier un bloc de mémoire à l’aide de la fonction
memmove()
dans Arduino
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.