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.
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. |
Valor de retorno
dest
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.
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
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
| |