Arduino memcpy e memmove
-
Copiar bloco de memória usando a função
memcpy()
no Arduino -
Copiar bloco de memória usando a função
memmove()
no Arduino
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.