elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:24  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Fallo de Segmentación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Fallo de Segmentación  (Leído 9,139 veces)
Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Fallo de Segmentación
« en: 12 Noviembre 2008, 16:26 »

Bueno, en primer lugar, hola a todos. Este es mi primer post y espero que podais ayudarme...

Estoy en Windows, con el programa DevC++ 4.9.9.2.

Cuando intento compilar una aplicacion me salta con un fallo de segmentación, pero para mi asombro, lo marca en una linea en blanco. No es la primera vez, otras veces reinicio el programa y se va, pero en este caso se me ha quedado.

¿Alguien puede explicarme por qué me marca una linea en blanco como fallo de segmentación? ¿Es fallo del programa o de la programación?

Se que los fallos de segmentación se producen cuando se intenta acceder a memoria no asignada al programa, ahora bien, ¿En una linea en blanco?



Saludos


En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
dooque

Desconectado Desconectado

Mensajes: 149



Ver Perfil
Re: Fallo de Segmentación
« Respuesta #1 en: 12 Noviembre 2008, 17:11 »

Citar
Se que los fallos de segmentación se producen cuando se intenta acceder a memoria no asignada al programa, ahora bien, ¿En una linea en blanco?

tu lo has dicho.... pone el code deonde masomenos falla la aplicacion! con ese pedasito es dificil adivinar!

saludos!


En línea
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #2 en: 12 Noviembre 2008, 17:13 »

Tambien pon el errore que te marca el Dev. Ahora ¿Estas ejecutandalo paso a paso?
En línea

Bien Super Divertido
@wifigdlmx
^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: Fallo de Segmentación
« Respuesta #3 en: 12 Noviembre 2008, 17:56 »

Haz pensado en Debugear?????

Cuando a mi me pasa eso de 'falla de segmentacion' aunque sea en 1 linea en blanco como dices tu (que me ha pasado mucho) intento buscar exactamente donde comienza a fallar mi codigo.

Sabes que hasta por obviar el delimitador & en una variable tipo numerico en scanf da 'falla de segmentacion'??? Y este no te dice explicitamente donde esta el error.... Tu debes buscarlo, linea por linea, si es al momento de compilar o sea nisiquiera te permite compilar...

Haz verificado que cada variable numerica en scanf lleve '&' ???? Podrias de paso postear tu codigo fuente aqui :)
En línea
Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Fallo de Segmentación
« Respuesta #4 en: 13 Noviembre 2008, 14:15 »

Bueno... Siento haber tardado tanto, he estado liado...  :-\

En primer lugar, quiero pedir perdón a los que habéis estado leyendo esto y contestando. Me gustaría cambiar la pregunta a una más básica y así saber si lo que estoy haciendo y mis ideas de programación orientada a objetos están bien...

1. ¿Es posible crear un array de clases?
2. Si se puede. ¿Esto es correcto?
Código:
ClaseA A[20];
A[0].setId(0);
//...
A[20].setId(20);

¿O se hace con un bucle?
Código:
for (int contaclases = 0; contaclases < 21; contaclases++)
   {
    ClaseA A[contaclases];
    A[contaclases].setId(contaclases);
   }

Si a alguien le sangran los ojos que lo diga, es que me estoy haciendo un cacao mental...
En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #5 en: 13 Noviembre 2008, 15:25 »

Si es posible crear un array de clases, pero antes de trabajar con ellas hay que inicializarlas con new.

Saludos.
« Última modificación: 13 Noviembre 2008, 15:32 por Anon » En línea

Bien Super Divertido
@wifigdlmx
Karman


Desconectado Desconectado

Mensajes: 657



Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #6 en: 13 Noviembre 2008, 16:39 »

definís tu arreglo como ClaseA A[20]; entonces valores válidos son: A[0] a A[19]... pero:

for (int contaclases = 0; contaclases < 21; contaclases++) <- valor fuera de rango!

no existe A[20]!!!!

además no es necesario:

for (int contaclases = 0; contaclases < 21; contaclases++){
ClaseA A[contaclases]; <---------- MAL!!

dentro del for... esto tendría que estar antes del for...

ClaseA A[21]; //<- así si funcionaría

S2
« Última modificación: 13 Noviembre 2008, 16:45 por Karman » En línea

AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #7 en: 13 Noviembre 2008, 16:41 »

Kerman tiene razon :xD.

yo solo respondi a la otra pregunta.
En línea

Bien Super Divertido
@wifigdlmx
Karman


Desconectado Desconectado

Mensajes: 657



Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #8 en: 13 Noviembre 2008, 16:43 »

no hace falta inicializarlas con new... eso es para un puntero de arreglo/arreglo de punteros a la clase!

S2
« Última modificación: 13 Noviembre 2008, 18:51 por Karman » En línea

AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #9 en: 13 Noviembre 2008, 17:12 »

no hace falta inicializarlas con new... eso es para un arreglo de punteros a la clase!

A gracias por la Aclarion xD... es que yo siempre trabajo con punteros, odio la memoria estatica xD
En línea

Bien Super Divertido
@wifigdlmx
Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Fallo de Segmentación
« Respuesta #10 en: 13 Noviembre 2008, 18:28 »

Entonces, ¿esto no es del todo correcto?

Código:
ClaseA *A;
A= new ClaseA[20];
En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
Karman


Desconectado Desconectado

Mensajes: 657



Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #11 en: 13 Noviembre 2008, 18:44 »

si... es correcto, pero vos pusiste: ClaseA A[20];

Código
ClaseA A[20]; //<- Arreglo estático
 
ClaseA *B = new ClaseA[20]; //<- Arreglo dinámico

sea como sea que lo hagas el error de Segmentación te da por acceder a un espacio de memoria no reservado (A[20])

S2
« Última modificación: 13 Noviembre 2008, 18:53 por Karman » En línea

Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Fallo de Segmentación
« Respuesta #12 en: 13 Noviembre 2008, 19:31 »

Pues el fallo me viene dando más o menos por esto:

Clase ClaseA
Código:
#include <iostream>

#ifndef _CLASEA_H_
#define _CLASEA_H_

class ClaseA
{
   public:
      void setId(int id) { this->Id = id; }
      int getId() { return this->Id; }
     
   private:
      int Id;
};

#endif

Main
Código:
using namespace std;

int main()
{
   ClaseA A[20];
   
   A[1].setId(1);

   getchar();
   return 0;
};

No era exáctamente esa clase, pero lo hacía de esa manera. La mayoría de las veces el fallo de segmentación me saltaba en setId();... Pero sigo sin saber porque.
En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #13 en: 13 Noviembre 2008, 19:39 »

Pon los errores que te salen. ahi dice claramente cual es el fallo :xD
En línea

Bien Super Divertido
@wifigdlmx
Karman


Desconectado Desconectado

Mensajes: 657



Ver Perfil WWW
Re: Fallo de Segmentación
« Respuesta #14 en: 13 Noviembre 2008, 19:49 »

no es tan complicado... vos definís una variable fuera de rango, entonces como:

A[20] no existe

por consiguiente A[20].setId(1); apuntaría a quien sabe donde (otro segmento de memoria) y te va a devolver fallo de segmentación...

S2
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[?] Fallo de segmentación - C
Programación C/C++
8789poli 3 1,422 Último mensaje 14 Diciembre 2010, 19:50
por 8789poli
Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
GNU/Linux
Garfield07 2 1,242 Último mensaje 1 Enero 2011, 01:03
por Garfield07
Fallo de segmentación al agregar mas nodos en una lista.
Programación C/C++
samur88 0 1,225 Último mensaje 19 Enero 2011, 15:08
por samur88
Fallo de segmentacion con fgets y Array de cadenas.
Programación C/C++
samur88 12 1,866 Último mensaje 7 Marzo 2011, 00:37
por samur88
Fallo de segmentacion
Programación C/C++
_niu 9 1,198 Último mensaje 29 Agosto 2011, 02:58
por _niu
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines