← Desenvolvimento

[Ajuda] Erros de Valgrind

Lida 988 vezes

Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Código: [Seleccione]

O Valgrind diz-me isto:

Citar
==3540== Use of uninitialised value of size 4
==3540==    at 0x407C8BC: hack_digit.12428 (printf_fp.c:243)
==3540==    by 0x407D79A: __printf_fp (printf_fp.c:943)
==3540==    by 0x40788B7: vfprintf (vfprintf.c:1613)
==3540==    by 0x4081A8E: fprintf (fprintf.c:33)
==3540==    by 0x8049C7A: esficsai (outs.c:35)
==3540==    by 0x8049EEC: main (main.c:26)

Citar
==3540== Conditional jump or move depends on uninitialised value(s)
==3540==    at 0x407EAF5: __printf_fp (printf_fp.c:807)
==3540==    by 0x40788B7: vfprintf (vfprintf.c:1613)
==3540==    by 0x4081A8E: fprintf (fprintf.c:33)
==3540==    by 0x8049C7A: esficsai (outs.c:35)
==3540==    by 0x8049EEC: main (main.c:26)

O programa corre tudo bem mas dá-me esses erros do valgrind. Já tentei declarar variáveis e associar as cenas do fprintf ás variáveis mas dá a mesma cena.. deve ser uma cena básica que não consigo encontrar. Help me para apagar o código do post. ;)
Offline

nram 
Membro
Mensagens 777 Gostos 0
Feedback +1

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Estás a programar em windows ou *unix?
Manipular assim ficheiros :cof cof: é uma porcaria.

Código: [Seleccione]
aux = malloc((strlen(argv[2]) + 1) * sizeof(char));
Troca por :
Código: [Seleccione]
aux = (char*) malloc( (strlen( argv[2] ) + 1 ) * sizeof(char));

Código: [Seleccione]
strncpy(aux, argv[2], (strlen(argv[2]) - 2));
strcat(aux,"out");
Isto não passa o limite do teu aux?

O resto assumo que esteja tudo correto, já não me lembro muito bem de trabalhar assim com ficheiros!
Offline

andre_mz 
Membro
Mensagens 688 Gostos 0
Feedback +3

Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 500 Posts

Em Ubuntu. O problema era do malloc.. devia ter feito calloc.

Para quem não sabe malloc armazena memória e põe as cenas a NULL ao contrário do calloc que põe a 0.

Thanks pela ajuda anyway. ;)