Arduino memcpy y memmove

Ammar Ali 12 octubre 2023
  1. Copiar bloque de memoria usando la función memcpy() en Arduino
  2. Copiar bloque de memoria usando la función memmove() en Arduino
Arduino memcpy y memmove

Este tutorial discutirá cómo copiar un bloque de memoria de una variable a otra usando las funciones memcpy() y memmove().

Copiar bloque de memoria usando la función memcpy() en Arduino

Si desea copiar el contenido de una variable a otra, puede hacerlo fácilmente usando la función memcpy(). Esta función toma tres argumentos de entrada. El primer argumento es la variable donde desea pegar los datos. El segundo parámetro es la variable de la que desea copiar los datos. El tercer parámetro es el número de bytes que necesita copiar de la segunda variable. Por ejemplo, considere que queremos copiar datos de un array a otra. Vea el código de ejemplo a continuación.

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

En el código anterior, hemos copiado todos los datos presentes en la variable secondArray en la variable firstArray. Tenga en cuenta que puede cambiar la cantidad de bytes que desea copiar en el tercer argumento. Esta función no comprueba el desbordamiento y no recibirá la salida requerida si las direcciones de las dos variables se superponen. Entonces, en lugar de usar esta función, puede usar la función memmove().

Copiar bloque de memoria usando la función memmove() en Arduino

La función memcpy() crea problemas cuando hay un desbordamiento o en el caso de las mismas direcciones de memoria. Puede utilizar la función memmove() en lugar de la función memcpy() para resolver los problemas anteriores. La función memmove() realiza la misma tarea que la función memcpy() pero ignora el desbordamiento. Entonces resolverá muchos problemas. Considere resolver el mismo ejemplo anterior con la función memmove().

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

En los dos ejemplos anteriores, el resultado será el mismo, pero puede utilizar la función memmove() para eliminar las posibilidades de error.

Autor: 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