elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda urgente error en valgrind
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda urgente error en valgrind  (Leído 3,046 veces)
kuni2006

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Ayuda urgente error en valgrind
« en: 26 Agosto 2016, 19:13 pm »

Yo hice la siguiente funcion:

Código
  1. int comparar(int vector1[], int n1, int vector2[], int n2)
  2. {
  3.    int i;
  4.    if (n1 == 0 && n2 != 0)
  5.        {
  6.        return -1;
  7.        }
  8.    if  (n2 == 0 && n1 != 0)
  9.        {
  10.        return 1;
  11.        }
  12.    for(i=0;i<n1||i<n2;i++)
  13.        {
  14.        if(vector1[i]<vector2[i])
  15.            {
  16.            return -1;
  17.            }
  18.        if(vector1[i]>vector2[i])
  19.            {
  20.            return 1;
  21.            }
  22.        if(vector1[i]==vector2[i]&&n1==n2)
  23.            {
  24.            return 0;
  25.            }
  26.        }
  27.    return 0;
  28. }

y me devuelve el siguiente error varias veces:

==22== Conditional jump or move depends on uninitialised value(s)
==22==    at 0x400738: comparar (tp0.c:67)
==22==    by 0x400DEB: prueba_comparar (tp0_pruebas.c:80)
==22==    by 0x400558: main (tp0_pruebas.c:147)
==22==  Uninitialised value was created by a stack allocation
==22==    at 0x400B20: prueba_comparar (tp0_pruebas.c:48

Si alguien me pudiera dar una mano, estaria muy agradecido.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Ayuda urgente error en valgrind
« Respuesta #1 en: 27 Agosto 2016, 04:46 am »

Hola, el error que te da valgrind es claro, no inicializas la variable i cuando la declaras. Así que con esto debería arreglarse:
Código
  1. int comparar(int vector1[], int n1, int vector2[], int n2)
  2. {
  3.    int i = 0; //esto es lo que debes modificar
  4.    if (n1 == 0 && n2 != 0)
  5.        {
  6.        return -1;
  7.        }
  8.    if  (n2 == 0 && n1 != 0)
  9.        {
  10.        return 1;
  11.        }
  12.    for(i=0;i<n1||i<n2;i++)
  13.        {
  14.        if(vector1[i]<vector2[i])
  15.            {
  16.            return -1;
  17.            }
  18.        if(vector1[i]>vector2[i])
  19.            {
  20.            return 1;
  21.            }
  22.        if(vector1[i]==vector2[i]&&n1==n2)
  23.            {
  24.            return 0;
  25.            }
  26.        }
  27.    return 0;
  28. }


En línea

Regístrate en
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Re: Ayuda urgente error en valgrind
« Respuesta #2 en: 27 Agosto 2016, 04:50 am »

Yo hice la siguiente funcion:

Código
  1. int comparar(int vector1[], int n1, int vector2[], int n2)
  2. {
  3.    int i;
  4.    if (n1 == 0 && n2 != 0)
  5.        {
  6.        return -1;
  7.        }
  8.    if  (n2 == 0 && n1 != 0)
  9.        {
  10.        return 1;
  11.        }
  12.    for(i=0;i<n1||i<n2;i++)
  13.        {
  14.        if(vector1[i]<vector2[i])
  15.            {
  16.            return -1;
  17.            }
  18.        if(vector1[i]>vector2[i])
  19.            {
  20.            return 1;
  21.            }
  22.        if(vector1[i]==vector2[i]&&n1==n2)
  23.            {
  24.            return 0;
  25.            }
  26.        }
  27.    return 0;
  28. }

y me devuelve el siguiente error varias veces:

==22== Conditional jump or move depends on uninitialised value(s)
==22==    at 0x400738: comparar (tp0.c:67)
==22==    by 0x400DEB: prueba_comparar (tp0_pruebas.c:80)
==22==    by 0x400558: main (tp0_pruebas.c:147)
==22==  Uninitialised value was created by a stack allocation
==22==    at 0x400B20: prueba_comparar (tp0_pruebas.c:48

Si alguien me pudiera dar una mano, estaria muy agradecido.

Como dijeron te falta inicializar variable, en algunos compiladores como el codeblocks no te pide que inicialices pero si es necesario hacerlo si vas a usar la variable en un arreglo o si lo que estas haciendo es un contador porque no sabes el valor que puede tener esa variable.
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Ayuda urgente error en valgrind
« Respuesta #3 en: 27 Agosto 2016, 08:35 am »

A la variable i le asignas un valor al principio del bucle for y sólo la utilizas dentro del bucle, por lo que ese no debería de el problema.

Hasta donde conozco valgrind (que es más bien poco o nada), lo que hace es buscar fugas de memoria en tus programas, pero por lo que comentas también debe de hacer el seguimiento de las variables que utilizas.

El error que estas recibiendo, si buscas en Google o incluso si utilizas un traductor, que cuesta bien poco, lo sabrías, es sobre la utilización de una variable sin inicializar en la evaluación de una condición. Asumiendo que valgrind hace un seguimiento de las variables, si descartamos la variable i nos quedan las cuatro variables que recibe la función. Asegúrate de haberles asignado un valor, ya sea por una asignación o una lectura, entre el momento de su declaración y el momento en el que llamas a la función. Sin ver más código no podemos decir nada más. Salvo que la variable que está dando problemas está en la línea 48 del archivo tp0_pruebas.c, dentro de la función pruebas_comparar:
Código:
==22==  Uninitialised value was created by a stack allocation
==22==    at 0x400B20: prueba_comparar (tp0_pruebas.c:48
« Última modificación: 27 Agosto 2016, 08:39 am por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
URGENTE: Como buscar en un rich text box pero si no hay resultados de un error
Programación Visual Basic
CICOLO_111234 4 1,762 Último mensaje 16 Diciembre 2008, 22:08 pm
por CICOLO_111234
AYUDA URGENTE ! Al intentar formatear me sale Error en la pantalla azul « 1 2 »
Windows
trodans 11 13,954 Último mensaje 27 Septiembre 2010, 16:10 pm
por Randomize
Errores en valgrind
Programación C/C++
elektro88 2 2,039 Último mensaje 1 Noviembre 2013, 01:13 am
por elektro88
Depurador, valgrind
Programación C/C++
user-marcos 0 1,328 Último mensaje 30 Abril 2015, 14:24 pm
por user-marcos
Duda Urgente sobre error de definiciones de constantes en C++!!
Programación C/C++
flaurens 4 2,650 Último mensaje 24 Mayo 2015, 23:14 pm
por kub0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines