je travaillais avec C et la gestion de la mémoire manuelle et jouer avec mon code et je remarquai ceci:Est-ce que memcpy doit toujours être utilisé?
Supposons que j'avais
int *a = malloc(sizeof(int));
int *b = malloc(sizeof(int));
int c = 10;
Si je prends ces chiffres et faire ceci:
*a = c;
Puis a
pointera vers un emplacement distinct dans la mémoire distincte de c
mais aura la valeur de c
. Si j'ai utilisé:
memcpy(a, &c, sizeof(int));
La même chose se produirait. Pointeur distinct, même valeur.
Ma question est de savoir si l'un est préférable à l'autre? Je sais pour char *
habituellement c'est memcpy
ou strcpy
qui est utilisé mais qu'en est-il pour ints? Qu'en est-il des pointeurs en général? La tâche est-elle toujours correcte?
P.S. Je sais aussi que
a = &c;
fera le point a
au même emplacement mémoire que c
et ont donc sa valeur mais j'imagine que laisserait un pointeur suspendu où a
était depuis free
est jamais fait appel à la mémoire pour a
donc je ne l'utiliserais pas.
Vous ne recevez aucune surcharge d'appel de fonction pour '* a = c;' –
'memcpy' est généralement utilisé uniquement lorsque vous ne pouvez pas effectuer une affectation normale, telle que la copie de tableaux. – Barmar