Es cierto lo que vos decís. Sé que no es lo mismo, pero a lo que voy es que no estoy seguro de que sea bueno escribir directamente una estructura de esa forma. Pensá que al leerlo sin tipo el fwrite recorrerá todo el registro sin importar dónde hay información y dónde no. Lo que estaría haciendo es leer lugares que no están inicializados porque no corresponden a datos. Sin embargo no pisaría memoria porque se ha reservado según el sizeof que tiene en cuenta la alineación. Por eso doy esta opción a probar. Además de esa forma podés asegurarte que el problema sea el fwrite.
   Saludos
   Tito
----- Original Message ----- From: "Sebastián Santisi" <[EMAIL PROTECTED]> To: "Una lista para consultas de programación" <[email protected]>
Sent: Wednesday, March 19, 2008 12:48 PM
Subject: Re: [Prog] problema valgrind - byte(s) no inicializados ??


Hola, Tito;

Tito escribió:
Probaste escribiendo campo por campo con fwrite? Creo que el problema puede ser intentar escribir todo el registro junto.
    Tal vez:
        fwrite(&(reg1->nro), sizeof(int), 1,  p);
        fwrite(&(reg1->letra), sizeof(char), 1,  p);

Cuidado que esto no tiene nada que ver con escribir una estructura.
Estás escribiendo sueltos enteros y chars y no son lo mismo.
Una estructura es un paquete, y como paquete tiene alineados sus miembros, y está alineada ella misma; escribir un int más un char, en una arquitectura de 32bits es escribir 5 bytes, mientras que escribir una estructura de un int más un char en seguramente serán 8 bytes. Hacé una prueba fijándote en los sizeofs de ambas cosas. No es que no se pueda escribir miembro por miembro; pero son dos cosas similares, y no intercambiables. (Para ver una manera de escribir por miembros y compatible con la estructura, consultá la macro offsetof()).
Saludos;

Sebastián Santisi
[EMAIL PROTECTED]

 Saludos
    Tito
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion


_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a