Arduino memcpy und memmove
-
Kopieren Sie den Speicherblock mit der Funktion
memcpy()
in Arduino -
Kopieren Sie den Speicherblock mit der Funktion
memmove()
in Arduino
In diesem Tutorial wird erläutert, wie Sie einen Speicherblock mit den Funktionen memcpy()
und memmove()
von einer Variablen in eine andere kopieren.
Kopieren Sie den Speicherblock mit der Funktion memcpy()
in Arduino
Wenn Sie den Inhalt einer Variablen in eine andere kopieren möchten, können Sie dies einfach mit der Funktion memcpy()
tun. Diese Funktion benötigt drei Eingabeargumente. Das erste Argument ist die Variable, in die Sie Daten einfügen möchten. Der zweite Parameter ist die Variable, aus der Sie Daten kopieren möchten. Der dritte Parameter ist die Anzahl der bytes
, die Sie aus der zweiten Variablen kopieren müssen. Angenommen, wir möchten Daten von einem Array in ein anderes kopieren. Siehe den folgenden Beispielcode.
int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memcpy(firstArray, secondArray, sizeof(secondArray)); }
Im obigen Code haben wir alle in der Variablen secondArray
vorhandenen Daten in die Variable firstArray
kopiert. Beachten Sie, dass Sie die Anzahl der zu kopierenden Bytes im dritten Argument ändern können. Diese Funktion prüft nicht auf Überlauf und Sie erhalten nicht die erforderliche Ausgabe, wenn sich die Adressen der beiden Variablen überschneiden. Anstatt diese Funktion zu verwenden, können Sie auch die Funktion memmove()
verwenden.
Kopieren Sie den Speicherblock mit der Funktion memmove()
in Arduino
Die Funktion memcpy()
verursachte Probleme bei Überlauf oder bei gleichen Speicheradressen. Sie können die Funktion memmove()
anstelle der Funktion memcpy()
verwenden, um die oben genannten Probleme zu lösen. Die Funktion memmove()
führt dieselbe Aufgabe aus wie die Funktion memcpy()
, ignoriert jedoch den Überlauf. Es wird also viele Probleme lösen. Lösen Sie das gleiche Beispiel wie oben mit der Funktion memmove()
.
int firstArray[10];
int secondArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
void setup() { memmove(firstArray, secondArray, sizeof(secondArray)); }
In beiden obigen Beispielen ist das Ergebnis dasselbe, aber Sie können die Funktion memmove()
verwenden, um die Fehlerwahrscheinlichkeit auszuschließen.