Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de
Autor
|
Tema: Fallo de Segmentación (Leído 9,139 veces)
|
Kropt32
Desconectado
Mensajes: 34
|
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
Mensajes: 149
|
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
Mensajes: 1.955
Anonymous & Paranoid
|
Tambien pon el errore que te marca el Dev. Ahora ¿Estas ejecutandalo paso a paso?
|
|
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.802
|
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
Mensajes: 34
|
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? ClaseA A[20]; A[0].setId(0); //... A[20].setId(20);
¿O se hace con un bucle? 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
Mensajes: 1.955
Anonymous & Paranoid
|
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
|
|
|
|
|
Karman
|
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
Mensajes: 1.955
Anonymous & Paranoid
|
Kerman tiene razon  . yo solo respondi a la otra pregunta.
|
|
|
|
|
En línea
|
|
|
|
|
Karman
|
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
Mensajes: 1.955
Anonymous & Paranoid
|
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
|
|
|
|
Kropt32
Desconectado
Mensajes: 34
|
Entonces, ¿esto no es del todo correcto? 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
|
si... es correcto, pero vos pusiste: ClaseA A[20]; 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
Mensajes: 34
|
Pues el fallo me viene dando más o menos por esto: Clase ClaseA #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 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.
|
|
|
|
|
|
Karman
|
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
|
|
|
|
|
| Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[?] Fallo de segmentación - C
Programación C/C++
|
8789poli
|
3
|
1,422
|
14 Diciembre 2010, 19:50
por 8789poli
|
|
|
Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
GNU/Linux
|
Garfield07
|
2
|
1,242
|
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
|
19 Enero 2011, 15:08
por samur88
|
|
|
Fallo de segmentacion con fgets y Array de cadenas.
Programación C/C++
|
samur88
|
12
|
1,866
|
7 Marzo 2011, 00:37
por samur88
|
|
|
Fallo de segmentacion
Programación C/C++
|
_niu
|
9
|
1,198
|
29 Agosto 2011, 02:58
por _niu
|
|