std::memmove - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
||
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:
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] | |
(C++11) |
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] | |
(C++11) |
Comprueba si un tipo es trivialmente copiable. (plantilla de clase) [editar] |
Documentación de C para memmove | |