std::memmove
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
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
|