Hasta donde yo veo el BUG está en la libc y no hay nada que puedas hacer.
Ignoralo.

Valgrind te reporta varios errores que están en la libc. Actualizá la libc a
la última versión estable disponible y volvé a intentar.

On 19/03/2008, Tito <[EMAIL PROTECTED]> wrote:
>
>      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);
>
>     Saludos
>     Tito
>
> ----- Original Message -----
> *From:* Federico De Seta <[EMAIL PROTECTED]>
> *To:* [email protected]
> *Sent:* Wednesday, March 19, 2008 10:33 AM
> *Subject:* [Prog] problema valgrind - byte(s) no inicializados ??
>
> Hola!. Tengo el siguiente programa:
>
>
> #include <stdio.h>
> #include "stdlib.h"
>
> typedef struct{
>     int nro;
>     char letra;
> }campo;
>
> int main(int argc, char ** argv)
> {
>     campo *reg1 = (campo*)malloc (sizeof(campo));
>     reg1->nro = 5 ;
>     reg1->letra ='g';
>     FILE* p = fopen("lala.txt", "wb");
>
>     fwrite((void*)reg1, sizeof(campo), 1,  p);
>     fclose(p);
>     free(reg1);
>     return (0);
> }
>
> Cuando lo corro con el valgrind me tira lo siguiente:
>
>
> ==6248== Memcheck, a memory error detector.
> ==6248== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
> ==6248== Using LibVEX rev 1804, a library for dynamic binary translation.
> ==6248== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
> ==6248== Using valgrind-3.3.0, a dynamic binary instrumentation framework.
> ==6248== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
> ==6248== For more details, rerun with: -v
> ==6248==
> ==6248== Syscall param write(buf) points to uninitialised byte(s)
> ==6248==    at 0x40E95C3: __write_nocancel (in /lib/tls/i686/cmov/libc-
> 2.3.6.so)==6248==    by 0x408CC8A: _IO_do_write@@GLIBC_2.1 (in
> /lib/tls/i686/cmov/libc-2.3.6.so)
> ==6248==    by 0x408C3D4: _IO_file_close_it@@GLIBC_2.1 (in
> /lib/tls/i686/cmov/libc-2.3.6.so)
> ==6248==    by 0x408281A: fclose@@GLIBC_2.1 (in /lib/tls/i686/cmov/libc-
> 2.3.6.so)
> ==6248==    by 0x80484AB: main (main.c:21)
> ==6248==  Address 0x4021005 is not stack'd, malloc'd or (recently) free'd
> ==6248==
> ==6248== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 11 from 1)
> ==6248== malloc/free: in use at exit: 0 bytes in 0 blocks.
> ==6248== malloc/free: 2 allocs, 2 frees, 360 bytes allocated.
> ==6248== For counts of detected errors, rerun with: -v
> ==6248== All heap blocks were freed -- no leaks are possible.
>
>
> La linea 21 del main es la del fclose. Alguien sabe que puede ser?
>
> Saludos y gracias de antemano por responder.
>
> Fd.
>
>  ------------------------------
>
> Tarjeta de crédito Yahoo! de Banco Supervielle. Solicitá tu nueva Tarjeta
> de crédito. De tu PC directo a tu casa.
> Visitá www.tuprimeratarjeta.com.ar
>
> ------------------------------
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
> ------------------------------
>
> No virus found in this incoming message.
> Checked by AVG.
> Version: 7.5.519 / Virus Database: 269.21.7/1335 - Release Date:
> 19/03/2008 09:54 a.m.
>
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>


-- 
_Leo_
[http://www.mininotebooks.com.ar - http://blog.drk.com.ar]
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a