Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error: Fallo de segmentación (`core' generado)

Estas en el tema de Error: Fallo de segmentación (`core' generado) en el foro de C/C++ en Foros del Web. Saludos! Estoy haciendo un ejercicio de la universidad utilizando las clases nodo y cola. Cuando lo ejecuto en Windows usando geany me muestra el resultado ...
  #1 (permalink)  
Antiguo 10/05/2013, 16:54
Avatar de Geekne  
Fecha de Ingreso: marzo-2011
Ubicación: Donde estoy? Washing you.
Mensajes: 30
Antigüedad: 13 años, 1 mes
Puntos: 0
Error: Fallo de segmentación (`core' generado)

Saludos!

Estoy haciendo un ejercicio de la universidad utilizando las clases nodo y cola. Cuando lo ejecuto en Windows usando geany me muestra el resultado correcto (lo que me dice que el codigo esta bien), el problema es que finalmente me aparece un mensaje que pone "Error ejecutando equis.exe aplicación." y el programa se cierra... ese tipico error en WIndows...

Abri Ubuntu para correrlo ahí y me aparece el siguiente error: "Fallo de segmentación (`core' generado)".

Segun lo que he podido leer en internet, el error viene dado por un manejo incorrecto de la memoria (en el tema de punteros, con el delete y/o el new). Probe varias cosas que consegui, pero sigue igual y ya no tengo ni idea de que puede estarme dando el error s:

Les dejo la implementación de las dos clases para que les echen un ojo:

nodo_t.hpp
Código:
#include <iostream>

#ifndef nodo_template
#define nodo_template

using namespace std;

template <class T>

class nodo{
    private:
    
        T elemento;
        nodo<T> *siguiente;
        
    public:
    
        nodo();
        T get_elem();
        void set_elem(T e);
        nodo<T>* get_siguiente();
        void set_siguiente(nodo<T> *sigui);
        ~nodo();
};

//Implementacion :D

template <class T>
nodo<T>::nodo(){
    siguiente = new nodo<T>();
    this->elemento='0';
    this->siguiente=NULL;
}

template <class T>
T nodo<T>::get_elem(){
    return this->elemento;
}

template <class T>
void nodo<T>::set_elem(T e){
    this->elemento=e;
}

template <class T>
nodo<T>* nodo<T>::get_siguiente(){
    return this->siguiente;
}

template <class T>
void nodo<T>::set_siguiente(nodo<T> *sigui){
    this->siguiente=sigui;
}

template <class T>
nodo<T>::~nodo(){
    elemento='0';
    delete siguiente;
}

#endif
cola_t.hpp
Código:
#ifndef cola_template

#define cola_template



#include <iostream>

#include "nodo_t.hpp"



using namespace std;



template <class T>



class cola{

	private:

		nodo<T> *frente, *final;

		int cantidad;

	public:

		cola();

		bool es_vacia();

		int longitud(); //		

		void encolar(T e);

		void desencolar(); //precondicion ¬es_vacia

		T obtener_frente(); //precondicion ¬es_vacia

		~cola();

};



template <class T>

cola<T>::cola(){

	this->frente=NULL;

	this->final=NULL;

	this->cantidad=0;

}



template <class T>

bool cola<T>::es_vacia(){

	return this->frente==NULL;

}



template <class T>

int cola<T>::longitud(){

	return this->cantidad;

}



template <class T>

void cola<T>::encolar(T e){

	nodo<T> *nuevo;

	

	nuevo = new nodo<T>();

	

	nuevo->set_elem(e);

	if(this->frente==NULL){

		this->frente=nuevo;

	}else{

		final->set_siguiente(nuevo);

	}

	this->final=nuevo;

	cantidad++;	

}



template <class T>

void cola<T>::desencolar(){

	nodo<T> *aux;

	

	aux=frente;

	frente=frente->get_siguiente();

	//aux->~nodo();

	aux->set_siguiente(aux);

	cantidad--;	

}



template <class T>

T cola<T>::obtener_frente(){

	return frente->get_elem();

}



template <class T>

cola<T>::~cola(){

	

	while( !this->es_vacia() ){

		this->desencolar();

	}
	delete frente;
	delete final;

}



#endif
Espero que me puedan ayudar!
__________________
Software libre rocks lml

Etiquetas: core, fallo, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:38.