Esta mañana encontramos un antiguo fragmento de código que causaba que una llamada a la biblioteca se bloqueara.Alguien está usando el nombre de la estructura como un nombre de variable también. ¿Qué dice realmente el código?
struct fred
{
int a;
int b;
int c;
};
fred fred[MAX_SIZE+1];
memset(fred, 0, sizeof(fred) * MAX_SIZE+1);
Parece ser que el sizeof (Fred) puede haber sido el tamaño de la matriz completa, más que el tamaño de la estructura, ya que se sobrescribe una gran cantidad de la memoria.
El hecho de que compilara sin previo aviso en varios sistemas diferentes parecía extraño.
¿Existe una semántica correcta para este caso en el que el tipo y el nombre de la variable están colisionando? o es este un tipo de comportamiento indefinido? o solo un defecto?
** ¿Qué dice realmente el código? ** Dice que alguien en su organización necesita hablar con severidad. ¿Quién pensó que sería una buena idea? – rlbond
@rlbond - El codificador se ha ido hace mucho, pero su memoria persiste. – EvilTeach
Me parece interesante que ese código malvado sería publicado por "EvilTeach" ... :) – dicroce