Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447

    [C++] Segmentation Fault

    Ho un codice in cui mi sto esercitando nella gestione di liste.
    Tuttavia dopo che compilo senza nessun errore quando lancio il programma, costituito di una semplice main solo per testare le funzioni attualmente scritte, emerge un errore segmentatio fault. Quasi sicuramente l'errore è al livello dell'ultima funzione scritta, ovvero la popFund(), poichè prima non avevo avuto acora nessun errore.

    Questo è il codice:

    codice:
    #include <iostream>
    using namespace std;
    
    struct elem{
    	int inf;
    	elem* pun;
    };
    
    class list{
    		elem* p0;
    	public:
    		list();
    		//~list();
    	    void initValueList(int, int);
    		void printList();
    		void pushHead(int);
    		bool popHead();
    		void pushFund(int);
    		bool popFund();
    		int findData(int);
    		int listSize();
    		list orderList();
    		list operator+ (list);
    		list operator[] (list);
    };
    
    list::list(){
    	p0=NULL;
    }
    
    void list::initValueList(int num=0, int value=0){
    	p0=NULL;
    	elem* p=p0;
    	for(int i=0; i<num; i++){
    		p=new elem;
    		p->inf=value;
    		p->pun=p0;
    		p0=p;
    	}	
    }
    
    void list::printList(){
    	elem* p=p0;
    	if(p==NULL)
    		cout << "Empty List\n";
    	else{	
    		while(p!=NULL){
    			cout << "'" << p->inf << "'->";
    			p=p->pun;
    		}
    	cout << "NULL\n";
    	}
    }
    
    void list::pushHead(int value){
    	elem* p=new elem;
    	p->inf=value;
    	p->pun=p0;
    	p0=p;
    }
    
    bool list::popHead(){
    	elem* p;
    	if(p0==NULL)
    		return false;
    	p=p0->pun;
    	p0=p;
    	delete p;
    	return true;
    }		
    		
    
    void list::pushFund(int value){
    	elem* p;
    	elem* q;
    	for(p=p0; p!=NULL; p=p->pun)
    		q=p;
    	p=new elem;
    	p->inf=value;
    	if(p0==NULL)
    		p0=p;
    	else
    		q->pun=p;
    }
    
    bool list::popFund(){
    	elem* p;
    	elem* q;
    	if(p0==NULL)
    		return false;
    	for(q=p0; q->pun!=NULL; q=q->pun)
    		p=q;
    	if(q==p0)
    		p0=NULL;
    	else
    		p->pun=NULL;
    	delete q;	
    	return true;
    }	
    		
    int main(){
    	list l1;
    	l1.initValueList(3, 3);
    	l1.printList();
    	l1.pushHead(5);
    	l1.printList();
    	l1.pushFund(5);
    	l1.printList();
    	l1.popHead();
    	l1.printList();
    	l1.popFund();
    	l1.printList();
    	return 0;
    }
    Sbagliando avevo continuato la discussione qui, pertanto chiedo scusa per la violazione del forum e ne approfitto per chiedere a Oregon che gentilmente mi aveva risposto se potesse indicarmi una guida sia cartacea che online per imparare a utilizzare un debugger.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Riporto parte della mia risposta ...

    Hai due problemi ... uno nella PushFund in cui, penso che manchi la parte in rosso

    codice:
    codice:...
    p->inf=value;
    p->pun=NULL;
    ...
    e uno nella popHead, ma non ho approfondito ...

    Per la guida al debugger, non so cosa consigliarti perche' dipende esclusivamente dall'IDE che utilizzi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Diciamo che uso dev-c++ quando sono su windows..
    Mentre quando sono sul mac utilizzo il terminale per compilare..

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Devc++ non te lo consiglio ... con Windows meglio Visual C++ Express Edition e il suo debug ...

    Per Mac ... non ti so dire.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Io sono veramente stufo di tutti questi professori universitari che prendono e fanno usare DEV-Cpp come IDE. C'è Visual Studio Express che è gratis e migliore.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Originariamente inviato da XWolverineX
    Io sono veramente stufo di tutti questi professori universitari che prendono e fanno usare DEV-Cpp come IDE ...
    Concordo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Io dell'università italiana oltre al dev-c++ sono stufo di altre cose..

    P.S. Davvero Visual Studio Express è gratuito?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Sì ... il Visual C++ 2008 EE lo trovi a partire da

    http://www.microsoft.com/express/download/#webInstall
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Pacio88
    Registrato dal
    Sep 2007
    Messaggi
    447
    Qual'è allora la differenza con quello a pagamento?
    Immagino per uno alle prime armi come me vada perfettamente bene, no?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,476
    Originariamente inviato da Pacio88
    Qual'è allora la differenza con quello a pagamento?
    Immagino per uno alle prime armi come me vada perfettamente bene, no?
    Va benissimo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.