#include <string.h> // <cstring> en C++
void * memcpy( void * destination, const void * source, size_t size ); // Avant C99 void * memcpy( void * restrict destination, const void * restrict source, size_t size ); // A partir de C99
Cette fonction permet de copier un bloc de mémoire spécifié par le paramètre source
, et dont la taille est spécifiée via le paramètre
size
, dans un nouvel emplacement désigné par le paramètre destination
. Il est bien entendu qu'il est de votre
responsabilité d'allouer suffisamment de mémoire pour le bloc de destination afin qu'il puisse contenir toutes les données.
En cas de chevauchement des deux blocs de mémoire (source
et destination
) le comportement de la fonction memcpy
n'est
pas garanti. Dans ce cas, veuillez préférer l'utilisation de la fonction memmove.
Attention, contrairement à strcpy, aucun test sur une éventuelle valeur nulle n'est réalisé pour stopper la copie. Seule la taille du bloc sera considérée.
malloc
).
La fonction renvoie l'adresse du bloc de mémoire de destination.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int array [] = { 54, 85, 20, 63, 21 }; int * copy = NULL; int length = sizeof( int ) * 5; /* Memory allocation and copy */ copy = (int *) malloc( length ); memcpy( copy, array, length ); /* Display the copied values */ for( length=0; length<5; length++ ) { printf( "%d ", copy[ length ] ); } printf( "\n" ); free( copy ); return EXIT_SUCCESS; }
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :