Je voudrais éviter d'utiliser memset()
sur une structure comme celle-ci:Éviter memset pour une structure de type multi
typedef struct {
int size;
float param1;
} StructA;
typedef struct {
StructA a;
unsigned int state;
float param2;
} Object;
Puis-je faire quelque chose comme ça (pseudo code, je ne peux pas vérifier ce moment)?
Object obj;
int *adr = (int*)&obj;
for (int i; i < sizeof(obj); i++) {
*adr++ = 0;
}
Va-t-il remettre à zéro chaque membre de obj?
EDIT: pour répondre aux questions sur les commentaires. J'ai travaillé sur certains cas (avec des structures de type uni), où memset
est deux fois plus lent que l'initialisation à la main. Donc, je vais envisager d'essayer d'initialiser la structure multi-type aussi.
Éviter memcpy()
serait bien aussi (en évitant le <string.h>
lib).
'int * adr'->' char * adr'. En outre, la réponse est oui. –
Pourquoi voudriez-vous éviter 'memset()'? Et si vous voulez vraiment, n'utilisez pas 'int' utilisez' unsigned char' à la place. Mais vous devriez utiliser 'memset()' à la place, vous devriez vraiment. –
En fait, ce qu'il fait est le même que 'memset'. –