SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: ka_1989 en Jueves 27 de Diciembre de 2007, 01:01

Título: Violación De Segmento
Publicado por: ka_1989 en Jueves 27 de Diciembre de 2007, 01:01
Muy buenas a todos. Tengo un problema que no se porque puede ser.
Lo que ocurre es lo siguiente:
Código: Text
  1.  
  2. /*problema de VIOLACION DE SEGMENTO*/
  3. if (encontrado){
  4.   cout<<"Los datos del productos seleccionado son: "<<endl;
  5.   cout<<"Código:  "<<productos[numproductos].codigo<<endl;
  6.   cout<<"Nombre:  ";escribircadena(productos[numproductos].nombre);
  7.   cout<<endl;
  8.   cout<<"Peso:    "<<productos[numproductos].peso<<" Kg"<<endl;
  9.   cout<<"Volumen: "<<productos[numproductos].volumen<< " Litros"<<endl;
  10.   cout<<"Zona:    "<<productos[numproductos].zona<<endl;
  11.   cout<<"Repisa:  "<<productos[numproductos].nrepisa<<endl;
  12.   cout<<endl;  
  13. }
  14. else{
  15.   ......
  16. }
  17.  
  18.  
Aquí esta el código y lo que ocurres es que cuado se va a mosrar esto por pantalla me da Violación de segmento.
Este mismo algoritmo lo tengo escrito en otra parte del programa, identicamente, y no me da ningún problema.
Si alguien pudiera ayudarme se lo agradezco.
Muchisimas gracias a todos, y si alguien supiera algo más sobre este error por favor nos cuente algo sobre él para evitar problemas futuros.
Muchas gracias por adelantado y Felices Fiestas a todos.
Título: Re: Violación De Segmento
Publicado por: ProfesorX en Jueves 27 de Diciembre de 2007, 03:11
Pues el segfault, o violacion de segmento, puede ser por muchas causas, pero lo mas comun es por utilizar punteros sin inicializar, o por leer fuera de los indices de un array.

Verifica que no estes leyendo datos fuera del indice del vector productos.
Título: Re: Violación De Segmento
Publicado por: ka_1989 en Jueves 27 de Diciembre de 2007, 15:42
Muxisimas gracias, estube mirando haber cual es el valor que tomaba numproductos, y comprobaba ke se salía del rango.
Claro lo que me ocurría era que en el bucle donde se le asignaba el valor a numproductos tenia puesto:

numproductos==i;

y esto no hacia nada y me tomaba valores del orden de 100000, y claro el array era como máximo 49 [50], jeje.

Muchas gracias por tu ayuda, y así ya se para otras veces donde puede estar el error.

GRACIAS, y ke paseís unas felices fiestas.