Arduino memcpy und memmove

Ammar Ali 12 Oktober 2023
  1. Kopieren Sie den Speicherblock mit der Funktion memcpy() in Arduino
  2. Kopieren Sie den Speicherblock mit der Funktion memmove() in Arduino
Arduino memcpy und memmove

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.

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