Arduino memcpy y memmove
-
Copiar bloque de memoria usando la función
memcpy()
en Arduino -
Copiar bloque de memoria usando la función
memmove()
en Arduino
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.