memmove, wmemmove
Wechselt ein Puffer zu anderen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter memmove_s, wmemmove_s.
void *memmove(
void *dest,
const void *src,
size_t count
);
wchar_t *wmemmove(
wchar_t *dest,
const wchar_t *src,
size_t count
);
Parameter
dest
Zielobjekt.src
Quellobjekt.count
Anzahl Bytes (memmove) oder (wmemmove) zu kopieren.
Rückgabewert
Der Wert von dest*.*
Hinweise
Kopien count Bytes (memmove) oder (wmemmove) von src in dest*.* Wenn einige Bereiche des Ursprungsbereichs und des Ziels überschneiden, sicherstellen beide Features, dass die ursprüngliche Quellbytes im überlappenden Bereich kopiert werden, bevor sie überschrieben wird.
Sicherheitshinweis Überprüfen, ob der Zielpuffer die gleiche Größe oder das größer als Quellpuffer ist. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
Die Funktionen memmove und wmemmove werden nur, wenn die Konstante _CRT_SECURE_DEPRECATE_MEMORY vor der Inklusionsanweisung definiert wird, damit die Funktionen veraltet sein können, wie im nachfolgenden Beispiel veraltet:
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>
or
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Anforderungen
Routine |
Erforderlicher Header |
---|---|
memmove |
<string.h> |
wmemmove |
<wchar.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_memcpy.c
// Illustrate overlapping copy: memmove
// always handles it correctly; memcpy may handle
// it correctly.
//
#include <memory.h>
#include <string.h>
#include <stdio.h>
char str1[7] = "aabbcc";
int main( void )
{
printf( "The string: %s\n", str1 );
memcpy( str1 + 2, str1, 4 );
printf( "New string: %s\n", str1 );
strcpy_s( str1, sizeof(str1), "aabbcc" ); // reset string
printf( "The string: %s\n", str1 );
memmove( str1 + 2, str1, 4 );
printf( "New string: %s\n", str1 );
}
.NET Framework-Entsprechung
Siehe auch
Referenz
strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l