memmove
, wmemmove
Verschiebt einen Puffer in einen anderen. Sicherere Versionen dieser Funktionen sind verfügbar. siehe memmove_s
, wmemmove_s
.
Syntax
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 der zu kopierenden Bytes (memmove
) oder Zeichen (wmemmove
).
Rückgabewert
Der Wert von dest
.
Bemerkungen
Kopiert count
-Bytes (memmove
) oder Zeichen(wmemmove
) von src
nach dest
. Wenn einige Bereiche des Quell- und des Zielbereichs überlappen, stellen beide Funktionen sicher, dass die ursprünglichen Quellbytes im überlappenden Bereich kopiert werden, bevor es sie überschreibt.
Sicherheitshinweis Stellen Sie sicher, dass der Zielpuffer dieselbe Größe wie der Quellpuffer aufweist bzw. größer ist. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
Die memmove
Funktionen und wmemmove
sind nur dann veraltet, wenn die Konstante _CRT_SECURE_DEPRECATE_MEMORY
vor der Inclusion-Anweisung definiert wird, damit die Funktionen veraltet sind, z. B. im folgenden Beispiel:
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <string.h>
oder
#define _CRT_SECURE_DEPRECATE_MEMORY
#include <wchar.h>
Anforderungen
-Routine zurückgegebener Wert | Erforderlicher Header |
---|---|
memmove |
<string.h> |
wmemmove |
<wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Compatibility.
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 );
}
The string: aabbcc
New string: aaaabb
The string: aabbcc
New string: aaaabb
Siehe auch
Pufferbearbeitung
_memccpy
memcpy
, wmemcpy
strcpy
, wcscpy
, _mbscpy
strncpy
, _strncpy_l
, wcsncpy
, _wcsncpy_l
, _mbsncpy
, _mbsncpy_l
\