Arduino memcpy e memmove
-
Copia blocco di memoria utilizzando la funzione
memcpy()
in Arduino -
Copia blocco di memoria utilizzando la funzione
memmove()
in Arduino
Questo tutorial discuterà come copiare un blocco di memoria da una variabile a un’altra usando le funzioni memcpy()
e memmove()
.
Copia blocco di memoria utilizzando la funzione memcpy()
in Arduino
Se vuoi copiare il contenuto di una variabile in un’altra, puoi farlo facilmente usando la funzione memcpy()
. Questa funzione accetta tre argomenti di input. Il primo argomento è la variabile in cui desideri incollare i dati. Il secondo parametro è la variabile da cui si desidera copiare i dati. Il terzo parametro è il numero di byte
che devi copiare dalla seconda variabile. Ad esempio, si consideri che si desidera copiare i dati da un array a un altro. Vedere il codice di esempio di seguito.
int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memcpy(firstArray, secondArray, sizeof(secondArray)); }
Nel codice sopra, abbiamo copiato tutti i dati presenti nella variabile secondArray
nella variabile firstArray
. Nota che puoi cambiare il numero di byte che vuoi copiare nel terzo argomento. Questa funzione non controlla l’overflow e non riceverai l’output richiesto se gli indirizzi delle due variabili si sovrappongono. Quindi, invece di usare questa funzione, puoi usare la funzione memmove()
.
Copia blocco di memoria utilizzando la funzione memmove()
in Arduino
La funzione memcpy()
creava problemi in caso di overflow o nel caso degli stessi indirizzi di memoria. Puoi usare la funzione memmove()
invece della funzione memcpy()
per risolvere i problemi di cui sopra. La funzione memmove()
esegue lo stesso compito della funzione memcpy()
ma ignora l’overflow. Quindi risolverà molti problemi. Considera di risolvere lo stesso esempio di cui sopra con la funzione memmove()
.
int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memmove(firstArray, secondArray, sizeof(secondArray)); }
In entrambi gli esempi precedenti, il risultato sarà lo stesso, ma puoi usare la funzione memmove()
per eliminare le possibilità di errore.