View Full Version : [C] Segmentation Fault (core dumped) su ubuntu 7.10
phantom85
26-01-2008, 16:38
Aiuto, sto uscendo pazzo!!!!
Non capisco come mai il codice allegato mi dia segmentation fault, compila perfettamente!
QUalcuno può gentilmente aiutarmi??
variabilepippo
26-01-2008, 16:49
Non capisco come mai il codice allegato mi dia segmentation fault, compila perfettamente!
Non esiste alcun nesso tra la compilazione senza errori/warning ed il verificarsi di errori a runtime.
Hint: devi allocare dinamicamente un po' di memoria... :rolleyes:
Non esiste alcun nesso tra la compilazione senza errori/warning ed il verificarsi di errori a runtime. non è vero: certi compilatori piuttosto avanzati ad esempio emanano un warning quando incontrano un format string errato in funzioni standard del C come la printf. Il compilatore Microsoft ad esempio nelle ultime versioni lo fa, e mi pare anche il gcc.
variabilepippo
26-01-2008, 17:44
In "matinformatica" si può enunciare il teorema "una compilazione senza errori/warning NON implica che non ci saranno malfunzionamenti a runtime". La dimostrazione mi sembra lapalissiana... Corollario: sarebbe bello vivere in un mondo senza bug.
Poi, se alcuni compilatori riescono (bontà loro) a rilevare alcuni errori semantici o codice potenzialmente errato allora stiamo parlando di altro. In generale puoi avere codice sintatticamente corretto ma del tutto non funzionante (= quanto affermato nel mio post precedente), con buona pace dei compilatori più evoluti.
phantom85
27-01-2008, 16:19
quindi come posso risolvere il problema???
....allocando un po' di memoria mi pare di capire sia la risposta, qualcuno mi dice cosa devo fare in pratica?
quindi come posso risolvere il problema???
....allocando un po' di memoria mi pare di capire sia la risposta, qualcuno mi dice cosa devo fare in pratica?
aggiungi #include <stdlib.h> all'inizio sotto stdio
poi quando dichiari fig devi allocare la memoria necessaria:
forma *fig = (forma*)malloc(sizeof(forma));
phantom85
27-01-2008, 16:48
grazie mille ora va!!! però come mai sul pc d un mio amico va senza l'allocazione??ha anche lui ubuntu, ma una versione precedente credo...
grazie mille ora va!!! però come mai sul pc d un mio amico va senza l'allocazione??ha anche lui ubuntu, ma una versione precedente credo...
farlo andare senza allocare memoria richiede un'approfondita conoscenza dei riti voodoo :asd:
forse lui non ha usato un puntatore ma ha dichiarato fig come "forma fig" e poi ha usato la notazione punto al posto della notazione freccia. altrimenti non me lo spiegherei
sottovento
27-01-2008, 17:53
grazie mille ora va!!! però come mai sul pc d un mio amico va senza l'allocazione??ha anche lui ubuntu, ma una versione precedente credo...
Si chiama fortuna (o sfortuna, dipende dai punti di vista). Non sto scherzando.
Siccome non hai allocato memoria, il puntatore contiene un numero casuale, pertanto va a scrivere a casaccio nella memoria.
Nel puntatore del tuo amico, al momento dell'esecuzione, c'era un valore che "sembrava buono", mentre il tuo puntatore aveva un indirizzo che non era valido (i.e. fuori dallo spazio di indirizzamento del tuo processo).
Suggerimento: quando allochi memoria, controlla sempre che l'allocazione sia andata a buon fine. Controlla anche nei programmini semplici.
Se l'allocazione non e' andata a buon fine, piuttosto che non far niente, termina il programma con un messaggio di errore.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.