Arduino memcpy e memmove

Ammar Ali 12 ottobre 2023
  1. Copia blocco di memoria utilizzando la funzione memcpy() in Arduino
  2. Copia blocco di memoria utilizzando la funzione memmove() in Arduino
Arduino memcpy e memmove

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.

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