Segmentation fault

di il
6 risposte

Segmentation fault

Salve, non riesco a capire perchè va in segmentation fault, l'algoritmo ins è corretto perchè l'ho preso dal prof..
#include<iostream>
using namespace std;
template <class T>
struct nodo
{
	T val;
	nodo<T>* left;
	nodo<T>* right;
	nodo<T>* padre;
	int mul;
};
template <class H> 
class MultiBST
{
	public:
		//virtual MultiBST<H>* ins(H x)=0;
		//virtual int multiplicity(H x)=0;
		//virtual void inorder()=0;
};
template <class H>
class MyMultiBST : public MultiBST<H>
{
	private:
		nodo<H>* radice;
	public:
		MyMultiBST()
		{
			radice=NULL;
		}
		void ins(H valore)
		{
	nodo<H>* nuovo= new nodo<H>; 
	nodo<H>* x=radice, *y=NULL; 
	
	nuovo->val=valore;
	nuovo->left=nuovo->right=NULL;
	while(x!=NULL) {
		y=x; 
		if (valore < x->val) x=x->left; 
		else x=x->right; 
		}
	nuovo->padre=y; 
	if (y==NULL) radice=nuovo; 

	else if (valore < y->val) y->left=nuovo; 
	else y->right=nuovo;
}
	/*	void inorder(nodo<H>* p)
		{
			inorder(p->left);
			cout<<p->val;
			inorder(p->right);
		}*/
		
			 
	
};
int main()
{
	MyMultiBST<int>* albero;
	albero->ins(1);
}

6 Risposte

  • Re: Segmentation fault

    Il fatto che l'abbia scritto il prof non vuol dire che sia per forza corretto. Il fatto poi che sia corretto non vuol dire per forza che vada bene.
    Ad esempio non viene controllato il valore di ritorno della new ... cosa succede se ritorna null?
    Ti consiglio di inserire una printf per ogni riga di codice per individuare il punto critico, poi ne riparliamo.
  • Re: Segmentation fault

    Ad esempio non viene controllato il valore di ritorno della new ... cosa succede se ritorna null?
    new solleva un'eccezione se non riesce ad allocare.
  • Re: Segmentation fault

    
    int main()
    {
       MyMultiBST<int>* albero;
       albero->ins(1);
    }
    
    Sicuro, sicuro che sia questo il main?
  • Re: Segmentation fault

    Non può ritornare null se inseriamo un elemento, dove devo mettere le cout?


    Penso che vada più che bene quel main
  • Re: Segmentation fault

    Era sbagliato il main, grazie shodan!!
  • Re: Segmentation fault

    Va bene lasciate pure la new senza controlli ...
Devi accedere o registrarti per scrivere nel forum
6 risposte