Arduino memcpy e memmove

Ammar Ali 12 outubro 2023
  1. Copiar bloco de memória usando a função memcpy() no Arduino
  2. Copiar bloco de memória usando a função memmove() no Arduino
Arduino memcpy e memmove

Este tutorial irá discutir como copiar um bloco de memória de uma variável para outra usando as funções memcpy() e memmove().

Copiar bloco de memória usando a função memcpy() no Arduino

Se quiser copiar o conteúdo de uma variável para outra, você pode fazer isso facilmente usando a função memcpy(). Esta função leva três argumentos de entrada. O primeiro argumento é a variável onde você deseja colar os dados. O segundo parâmetro é a variável da qual você deseja copiar os dados. O terceiro parâmetro é o número de bytes que você precisa copiar da segunda variável. Por exemplo, considere que queremos copiar dados de um array para outro. Veja o exemplo de código abaixo.

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

No código acima, copiamos todos os dados presentes na variável secondArray para a variável firstArray. Observe que você pode alterar o número de bytes que deseja copiar no terceiro argumento. Esta função não verifica o estouro e você não receberá a saída necessária se os endereços das duas variáveis ​​se sobreporem. Portanto, em vez de usar esta função, você pode usar a função memmove().

Copiar bloco de memória usando a função memmove() no Arduino

A função memcpy() cria problemas quando ocorre um overflow ou no caso dos mesmos endereços de memória. Você pode usar a função memmove() em vez da função memcpy() para resolver os problemas acima. A função memmove() executa a mesma tarefa que a função memcpy(), mas ignora o estouro. Portanto, isso resolverá muitos problemas. Considere resolver o mesmo exemplo acima com a função memmove().

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

Em ambos os exemplos acima, o resultado será o mesmo, mas você pode usar a função memmove() para eliminar as chances de erro.

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