std:: memmove
|
Défini dans l'en-tête
<cstring>
|
||
|
void
*
memmove
(
void
*
dest,
const
void
*
src,
std::
size_t
count
)
;
|
||
Effectue les opérations suivantes dans l'ordre :
- Crée implicitement des objets à dest .
- Copie count caractères (comme de type unsigned char , idem ci-après) depuis l'objet pointé par src vers un tableau temporaire arr de count caractères, où arr ne chevauche pas les objets pointés par dest et src .
- Copie count caractères depuis arr vers l'objet pointé par dest .
Si dest ou src est un pointeur nul ou un pointeur invalide , le comportement est indéfini.
Table des matières |
Paramètres
| dest | - | pointeur vers l'emplacement mémoire de destination |
| src | - | pointeur vers l'emplacement mémoire source |
| count | - | nombre d'octets à copier |
Valeur de retour
S'il existe un objet créé approprié , retourne un pointeur vers celui-ci ; sinon retourne dest .
Notes
Bien que la spécification indique qu'un tampon temporaire est utilisé, les implémentations actuelles de cette fonction n'entraînent pas la surcharge d'une double copie ou de mémoire supplémentaire. Pour de petites count , elle peut charger et écrire des registres ; pour des blocs plus grands, une approche courante (glibc et bsd libc) consiste à copier les octets vers l'avant depuis le début du tampon si la destination commence avant la source, et vers l'arrière depuis la fin sinon, avec un recours à std::memcpy lorsqu'il n'y a aucun chevauchement.
Lorsque
l'aliasing strict
interdit d'examiner la même mémoire comme des valeurs de deux types différents,
std::memmove
peut être utilisé pour convertir les valeurs.
Exemple
Sortie :
1234567890 1234456890
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| LWG 4064 | C++98 | il n'était pas clair si le pointeur retourné pointe vers un objet créé approprié | clarifié |
Voir aussi
|
copie un tampon vers un autre
(fonction) |
|
|
remplit un tampon avec un caractère
(fonction) |
|
|
copie un certain nombre de caractères larges entre deux tableaux, potentiellement chevauchants
(fonction) |
|
|
(C++11)
|
copie une plage d'éléments vers un nouvel emplacement
(modèle de fonction) |
|
copie une plage d'éléments dans l'ordre inverse
(modèle de fonction) |
|
|
(C++11)
|
vérifie si un type est trivialement copiable
(modèle de classe) |
|
Documentation C
pour
memmove
|
|