std:: memmove
|
Definiert im Header
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
Führt die folgenden Operationen in der angegebenen Reihenfolge aus:
- Erstellt implizit Objekte an dest .
- Kopiert count Zeichen (als ob vom Typ unsigned char , im Folgenden gleich) vom Objekt, auf das src zeigt, in ein temporäres Array arr von count Zeichen, wobei arr sich nicht mit den Objekten überschneidet, auf die dest und src zeigen.
- Kopiert count Zeichen von arr in das Objekt, auf das dest zeigt.
Wenn dest oder src ein Nullzeiger oder ungültiger Zeiger ist, ist das Verhalten undefiniert.
InhaltParameter
RückgabewertFalls ein geeignetes erstelltes Objekt vorhanden ist, gibt es einen Zeiger darauf zurück; andernfalls wird dest zurückgegeben. HinweiseObwohl die Spezifikation besagt, dass ein temporärer Puffer verwendet wird, verursachen tatsächliche Implementierungen dieser Funktion nicht den Aufwand von doppeltem Kopieren oder zusätzlichem Speicher. Für kleine count kann es Register laden und zurückschreiben; für größere Blöcke ist ein gängiger Ansatz (glibc und bsd libc), Bytes vorwärts vom Anfang des Puffers zu kopieren, wenn das Ziel vor der Quelle beginnt, und rückwärts vom Ende andernfalls, mit einem Fallback zu std::memcpy wenn es überhaupt keine Überlappung gibt.
Wo
strict aliasing
die Untersuchung desselben Speichers als Werte zweier unterschiedlicher Typen verbietet,
Beispiel
Diesen Code ausführen
Ausgabe: 1234567890 1234456890 FehlerberichteDie folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
Siehe auch
| |||||||||||||||||||||||||||||||||