Je suis en train d'utiliser un malloc court, quelque chose commeMalloc de 2 octets donne des problèmes
typedef union _SOME_STRUCT_ {
struct {
USHORT u:4;
USHORT v:4;
USHORT w:4;
} x;
USHORT word;
} SOME_STRUCT, *PSOME_STRUCT;
PSOME_STRUCT p = malloc (sizeof (SOME_STRUCT));
if (p) {
p->x.u = 0;
}
free (p); // **** RANDOMLY CRASHING HERE ****
Je suis débogage pour quelques jours et désemparés,
Note (modifiée): Linux, et la version gcc 3.4.6 20060404
NUMÉRO UTILISATION Valgrind TROUVE
Mais, je voudrais documenter ici afin que mes collègues développeurs pourraient être au courant d'une telle situation ...
j'avais effectivement défini la structure
typedef union _SOME_STRUCT_ {
struct {
USHORT u:4;
USHORT v:4;
USHORT w:4;
} x;
USHORT word;
} ALBUM, *PALBUM;
et quelques-uns, où les autres dans le code que j'avais également défini
#define ALBUM "album"
et, sizeof (ALBUM) faisait référence à la valeur #define plutôt que le typedef et par conséquent la question.
Ce qui me stupéfie est,
Est-ce permis en C?
Quel OS/compilateur? – Arkadiy
Il fonctionne parfaitement bien pour moi sur Windows XP/MinGW ... – DeadHead
Linux, et gcc Version 3.4.6 20060404. – Alphaneo