Newsgroup: it.comp.lang.c
Titolo: segmentation fault

Sto scrivendo un programma in c/c++ con gcc/g++ sotto linux.
Comprende varie classi che compila e linka correttamente tuttavia in
esecuzione crasha dando errore di segmentation fault. Il punto e' che il
programma dà errore subito, dopo appena due printf.
Non riesco a capacitarmi del motivo dell' errore.
Mi chiedo se esista qualche comando da inserire nel codice o qualche
parametro da passare al compilatore affinche' vengano assegnati al processo
in esecuzione segmenti piu' ampi.
Oppure la soluzione devo cercarla altrove. Potete elencarmi le possibili
cause che portano a tal tipo di errore?
Ciao, Fabio.

 Non riesco a capacitarmi del motivo dell' errore.
Se e' in C, posta le righe incriminate.
-- 
-=[]=---iAN CooG---=[]=-
Mio nonno era cosi' duro che sulla tomba volle scrivere "CAZZO GUARDI?"

 programma dà errore subito, dopo appena due printf.
Se avviene su di una printf probabilmente stai tentando di accedere ad un
puntatore non valido; prova a postare qualche riga di codice.
Ciao

 in esecuzione segmenti piu' ampi.
perché non usi un debugger? gdb?

 Luigi
Il codice, e' talmente semplice che mi sembrava inutile postarlo:  entrano 
in gioco solo due printf e nessuna variabile, puntatore o altra richiesta 
di memoria. Mi sembra ovvio che l' errore vada cercato altrove. Comunque 
eccolo qua:
void inizia()
{ 
        printf("Inizio.\n"); //qui da segmentation fault
        ...............
}
int main()
{ 
        printf("Benvenuti al programma.\n");
        inizia();
        return 0;
}
Secondo gdb l' errore risale alla funzione strcat che evidentemente printf 
(ma anche cout in quanto ho provato anch' essa) richiama ed e' contenuta in 
/lib/libc.so.6 delle glibc. La soluzione piu' ovvia mi sembra quella di 
aggiornare tali librerie.
-- 
Nessuno vuole la guerra.
                -- Kirk, "Errand of Mercy", data astrale 3201.7

Raga' che stupido. Mi ero scordato che in alto al codice del file principale 
vi era dichiarato globalmente un vettore di 4 elementi di una classe 
"giocatore". Il costruttore di tale classe era a dare problemi infatti 
eseguivo semplicemente una istruzione del tipo strcpy(nome,"pippo\0") senza 
che fosse preceduta da un' altra come nome = new char[DIM]; 
Comunque grazie dell' aiuto.
-- 
Svuota la tua mente, svuota la tua mente...  Gia' fatto?  Non c'era 
granche',
allora...
                -- Mago Oronzo (Raul Cremona), "Mai Dire Gol"

 Comunque grazie dell' aiuto.
strcpy(nome,"pippo\0") e' esattamente uguale strcpy(nome,"pippo")
quando definisci una stringa con "" il carattere '\0' di terminaizone viene
aggiunto automaticamente
e la strcpy si ferma quando trova un '\0' quindi il successivo '\0' non
viene copiato

 nome = new char[DIM];
malloc(), di qua si chiama malloc() ^_-
-- 
-=[]=---iAN CooG---=[]=-
I love you!, ohh mhhh, ahhh... Please Insert Coin to Continue!

 eseguivo semplicemente una istruzione del tipo strcpy(nome,"pippo\0")
senza
Non c'è bisogno del '\0' nella stringa. Ah, dimenticavo: evita di usare
variabili globali ;-p
Ciao

 ha scritto nel messaggio
news:gBZNa.152297$lK4.4...@twister1.libero.it...

Ultimo appunto: la prossima volta NON CROSSPOSTARE, cribbio.
;-p
Ciao

Siete sempre cosi' cortesi in questo newsgroup??? La prossima volta evitero'
di postare e basta :-((


 di postare e basta :-((
Non so se avevi notato lo smiley che avevo messo proprio per attenuare il
tono dell'avertimento.
Comunque sei stato tu il primo ad essere scortese nei confronti di chi segue
i due NG su cui hai crosspostato.
Ciao

che fosse preceduta da un' altra come nome = new char[DIM]; 
std::string !!!
sbirish.