- trixie 4.27.0-1
- trixie-backports 4.31.0-1~bpo13+1
- testing 4.31.0-1
- unstable 4.32.4-1
| memcmp(3) | Library Functions Manual | memcmp(3) |
BEZEICHNUNG¶
memcmp - Speichervergleich
BIBLIOTHEK¶
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT¶
#include <string.h> // siehe memory.h(3head)
int memcmp(size_t n;
const void s1[n], const void s2[n], size_t n);
BESCHREIBUNG¶
Die Funktion memcmp() vergleicht die ersten n Byte (jedes wird als unsigned char interpretiert) der Speicherbereiche s1 und s2.
RÜCKGABEWERT¶
Die Funktion memcmp() gibt eine Ganzzahl zurück, die kleiner als, gleich oder größer als Null ist, wenn die ersten n Byte von s1 kleiner als, gleich oder größer als die ersten n Byte von s2 sind.
Für einen von Null verschiedenen Rückgabewert wird das Vorzeichen durch das Vorzeichen der Differenz innerhalb des ersten Byte-Paares bestimmt (als vorzeichenloses Zeichen interpretiert), das sich in s1 und s2 unterscheidet.
Falls n Null ist, ist der Rückgabewert Null.
ATTRIBUTE¶
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
| Schnittstelle | Attribut | Wert |
| memcmp() | Multithread-Fähigkeit | MT-Sicher |
VERSIONEN¶
POSIX.1 spezifiziert nur, dass:
Das Vorzeichen eines von 0 verschiedenen Rückgabewertes muss durch das Vorzeichen des Unterschiedes zwischen den Werten des ersten Byte-Paares, die sich in den zu vergleichenden Zeichenketten unterscheiden, bestimmt werden, wobei beide Bytes als Typ unsigned char interpretiert werden.
In Glibc, wie auch den meisten anderen Implementierungen, ist der Rückgabewert das arithmetische Ergebnis der Rechnung, bei der das letzte verglichene Byte in s2 vom letzten verglichenen Byte in s1 abgezogen wird. (Falls die zwei Zeichen identisch sind, ist die Differenz 0.)
STANDARDS¶
C11, POSIX.1-2008.
GESCHICHTE¶
POSIX.1-2001, C89, SVr4, 4.3BSD.
WARNUNGEN¶
Verwenden Sie memcmp() nicht, um vertrauliche Daten wie kryptographische Geheimnisse zu vergleichen; da die benötigte CPU-Zeit abhängig vom Inhalt der verglichenen Adressen ist, ist diese Funktion Ziel von zeitbasierten Seitenkanalangriffen. Stattdessen wird in solchen Fällen eine Funktion benötigt, die den Vergleich in konstanter Zeit durchführt und die nur von n abhängt (der Menge der verglichenen Bytes). Einige Betriebssysteme bieten eine solche Funktion (z.B. NetBSDs consttime_memequal()), aber in POSIX ist keine solche Funktion spezifiziert. Unter Linux kann es notwendig sein, eine solche Funktion selbst zu implementieren.
SIEHE AUCH¶
memory.h(3head), memeq(3), wmemcmp(3)
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
| 10. August 2026 | Linux man-pages 6.20 |