Arbeit von Memcpy
Memcpy kopiert Daten Bytes per Byte vom Quellarray zum Zielarray. Dieses Kopieren von Daten ist Threadsafe. Der Prozess des Kopierens von Daten kann fehlschlagen, wenn die angegebene Größe für das Zielarray nicht genau ist. Irgendwann werden die Verhaltensweisen der Memcpy () -Funktion je nach Bedingung undefiniert undefiniert. Manchmal überlappen sich die Objekte, und an einem der beiden Standorte gibt es einen Nullzeiger, entweder Quelle oder Ziel.
Syntax von Memcpy
# memcpy (void Ziel, Const void Quelle, Größenzahl);Hier sind Ziel und Quelle die Standorte, von denen der Inhalt kopiert wird und an welchen Ort sie kopiert werden. Der dritte Parameter zeigt die Anzahl der Bytes, die kopiert werden sollen. Der Rückgabewert aus dieser Funktion für basiert.
Implementierung der Memcpy () -Funktion
Beispiel 1
Dieses Beispiel enthält die Kopie der Daten aus der Quelle zum Zielteil. Zunächst müssen wir zwei Bibliotheken und eine Header -Datei in unserem Quellcode verwenden. Eine davon ist die iOstream -Bibliothek, die CIN und Cout in C ++ - Programmen ermöglicht und die Benutzerbeteiligung effektiv verwendet. In diesem Programm müssen wir jedoch nur die resultierenden Werte anzeigen. Deshalb müssen wir es erwähnen. Die zweite Bibliothek ist die Bibliothek, die das Kopieren von Daten von der Quelle zum Ziel ermöglicht. Dieses Kopieren und die Zuordnung des Speichers erfolgt über eine Bibliothek namens Cstring. Um das Programm in einem Arbeitszustand zu erstellen, werden wir zunächst diese beiden Bibliotheken in die Header -Datei aufnehmen.
#enthaltenAlle Funktionen der Zeichenfolge oder des Zeichenarrays werden unter Verwendung einer Bibliothek Cstring durchgeführt. Im Hauptprogramm werden zwei Charakter -Arrays initialisiert. Einer ist ein Quellarray, und das andere ist das Ziel -Array. Beide Arrays sind mit Daten gefüllt, die wir kopieren müssen. In diesem Code kopieren wir alle Daten eines Arrays in ein anderes. Alle Bytes werden im Zielarray dupliziert, da die Daten Byte durch Byte kopiert werden. Hier haben beide Arrays Daten.
Es könnte eine Möglichkeit geben, wenn wir Bytes von einem Array zum anderen kopieren und wenn das Ziel -Array leer ist. Diese Arten von Beispielen werden später im Artikel erörtert.
Im Moment werden wir die MemcPy -Funktion verwenden, um die Quell- und Ziel -Arrays als Parameter und die Größe der Quelle zu nutzen, um sie einfach zu kopieren.
Memcpy (Ziel, Quelle, Größe (Quelle));Der dritte Parameter bestimmt die Größe des Quellzeichenarrays. Verwenden Sie als nächstes die Cout -Anweisung, um den Inhalt im Zielarray anzuzeigen.
Wir verwenden immer einen Compiler, um zu kompilieren. Führen Sie dann den Code aus, also verwenden wir G++. Das "-O" speichert die Ausgabe des in der Eingabedatei vorhandenen Code.
$ g ++ -o mem mem mem.CDas Quellarray enthält "Linux -Tipp" aus dem resultierenden Wert, und das Ziel hat "Artikel". Jetzt enthält das Zielarray die Daten des Quellarrays.
Beispiel 2
Dieses Beispiel funktioniert auf demselben Phänomen, aber wir kopieren die Daten von der Quelle zum Ziel bis zu einem bestimmten Limit. Zum Beispiel enthält das Quellzeichen -Array die gleichen Daten wie "Linux Tipp", und das Ziel -Array hat "memcpy". Daher müssen wir die Daten aus dem Ziel in die Quelle von 4 Bytes kopieren. Zu diesem Zweck erwähnen wir die Anzahl der Bytes als Parameter. Während des Kopierens der spezifischen Anzahl von Bytes werden die Daten im Zielarray durch die der Quelldatei ersetzt.
Memcpy (Ziel, Quelle, 4);Hier müssen wir die Größe des Quellarrays nicht berechnen. Es ist nur eine Nummer zu erwähnen, wo wir Daten kopieren möchten.
Sie werden sehen, dass die 4 Bytes der Quelle an das Ziel kopiert werden. Beispiel. Während im Zielarray die ersten 4 Bytes entfernt und durch die Bytes des Quellarrays ersetzt werden. Der Rest der Bytes im Zielarray bleibt gleich.
Beispiel 3
In diesem Beispiel haben wir ganzzahlige Werte im Quellarray. Dieses Mal wird ein Quellarray mit spezifischer Größe definiert, um Daten in gewissem Maße zu speichern. Wie wir bereits erwähnt haben, werden die Daten der Quelle jetzt in das leere Array kopiert. Als nächstes werden wir ein Zielarray einer bestimmten Größe deklarieren. Im folgenden Beispiel haben wir die Größe des Arrays als 7 erwähnt, was bedeutet, dass wir 7 Ganzzahlen im Ziel -Array kopieren werden:
Int destination [7];Jetzt werden wir die MemcPy -Funktion verwenden, um die Ganzzahlwerte von 7 Zahlen zu kopieren, um das Duplizieren von ganzen Daten aus der Quelldatei zu vermeiden. Hier verwenden wir das Ziel, das Quellarray und die Gesamtgröße des Ganzzahlarrays multipliziert mit 7, um die tatsächliche Größe zu berechnen:
# Memcpy (Ziel, Quelle, Größe (int) * 7);Als Nächst. Da jede Zahl durch den Index eines Arrays getrennt ist, enthält jeder Index einen separaten Wert. A für die Schleife wird weiterhin bis zur 7. Position iteriert. Speichern Sie nun den Code für die Kompilierung.
Infolgedessen werden 7 Ganzzahlen kopiert. Dies enthält insgesamt 10 Bytes:
Beispiel 5
Im letzten Beispiel haben wir die Ganzzahlwerte in das leere Array kopiert. Hier kopieren wir die Zeichen aus dem Charakterquellarray zum leeren Zielzeichen -Array.
Initialisieren Sie zunächst das Quellarray mit der Zeichenfolge. Erstellen Sie beim Einführen des Zielzeichenarrays nur die Größe des Arrays und halten Sie es leer. Wenden Sie dieselbe MEMCPY -Funktion an, um den Inhalt des Quellarrays in die Zieldatei zu kopieren. Wir haben eine Grenze angewendet, um die Daten zu kopieren, wie zuvor. Wir möchten also Daten von 9 Bytes übertragen, da wir die Größe des Zielarrays als 10 übernommen haben.
Memcpy (Ziel, Quelle, Größe (char)*9);Wenn die Größe auf das Array angewendet wird. Dadurch werden die in jedem Index des Zielarrays vorhandenen Werte angezeigt. Die Daten der Quelle bis zum 9. Byte, einschließlich des Raums, finden Sie unten:
Abschluss
Der Artikel „C ++ Memcpy“ ist eine Wissensquelle in Bezug auf die integrierte Funktion in der C ++-Programmiersprache. Es gibt viele Möglichkeiten beim Kopieren von Daten von einem Array zwei -anderen. Diese werden mit Hilfe von Beispielen erklärt, um Unklarheiten hinsichtlich der Verwendung der Memcpy () -Funktion zu beseitigen. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Tutorials finden Sie in den anderen Linux -Hinweisartikeln.