Espacios de nombres
Variantes
Acciones

std::memmove

De cppreference.com
< cpp‎ | string‎ | byte
 
 
 
Cadenas de bytes terminadas en nulo
Funciones
Manipulación de caracteres
Conversiones a formatos numéricos
(C++11)(C++11)
(C++11)(C++11)
Manipulación de cadenas
Examinación de cadenas
Manipulación de memoria
memmove
Misceláneos
 
Definido en el archivo de encabezado <cstring>
void* memmove( void* dest, const void* src, std::size_t count );

Copia count caracteres del objeto apuntado por src al objeto apuntado por dest. Ambos objetos se reinterpretan como arrays de unsigned char.

Los objetos pueden traslaparse: la copia toma lugar como si los caracteres se copiaran a un array de caracteres temporal y luego se copiaran del array a dest.

Si bien dest o src es un puntero inválido o nulo, el comportamiento es indefinido, incluso si count es cero.

Si los objetos son potencialmente traslapantes o no son trivialmente copiables (TriviallyCopyable), el comportamiento de memmove no está especificado y puede estar indefinido.

Contenido

[editar] Parámetros

dest - Puntero a la ubicación de memoria a la cual copiar.
src - Puntero a la ubicación de memoria de la cual copiar.
count - Número de bytes a copiar.

[editar] Valor de retorno

dest

[editar] Notas

A pesar de estar especificada "como si" se usara un búfer temporal, las implementaciones actuales de esta función no incurren en el costo de doble copiado o memoria extra. Para una count pequeña, puede cargar y escribir a los registros; para bloques más grandes, un enfoque (glibc y bsd libc) es copiar los bytes hacia adelante a partir del inicio del búfer si el destino inicia antes de la fuente, y de lo contrario hacia atrás, con un plan alternativo para std::memcpy cuando no hay traslape en lo absoluto.

[editar] Ejemplo

#include <iostream>
#include <cstring>
 
int main()
{
    char str[] = "1234567890";
    std::cout << str << '\n';
    std::memmove(str + 4, str + 3, 3); // copia de [4, 5, 6] a [5, 6, 7]
    std::cout << str << '\n';
}

Salida:

1234567890
1234456890

[editar] Véase también

Copia un búfer a otro
(función) [editar]
Llena un búfer con un carácter
(función) [editar]
Copia una cierta cantidad de caracteres anchos entre dos arrays que posiblemente se superponen
(función) [editar]
Copia un rango de elementos a una nueva ubicación.
(plantilla de función) [editar]
Copia un rango de elementos en orden inverso.
(plantilla de función) [editar]
Comprueba si un tipo es trivialmente copiable.
(plantilla de clase) [editar]
Documentación de C para memmove