std::memmove
Definido en el archivo de encabezado <cstring> | ||
void* memmove(void* dest, constvoid* 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 unsignedchar.
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
Salida:
1234567890 1234456890
[editar]Véase también
Copia un búfer a otro (función) | |
Llena un búfer con un carácter (función) | |
Copia una cierta cantidad de caracteres anchos entre dos arrays que posiblemente se superponen (función) | |
(C++11) | Copia un rango de elementos a una nueva ubicación. (plantilla de función) |
Copia un rango de elementos en orden inverso. (plantilla de función) | |
(C++11) | Comprueba si un tipo es trivialmente copiable. (plantilla de clase) |
Documentación de C para memmove |