Christian Seiler: Segmentation Fault in C

Beitrag lesen

Hallo,

DevC++ liefert mir ein Segmentation Fault. Was hat das zu bedeuten?

Kurzes Überfliegen zeigt das erste Problem bereits in _string_init - Du gibst einen Zeiger auf eine Variable, die auf dem Stack liegt, zurück:

_string tmp;  
// weiter unten  
return &tmp;

Das kann natürlich nicht funktionieren. Du musst den Rückgabewert dann schon auf dem Stack anlegen, etwa so:

_string *tmp = (_string *) malloc (sizeof (_string));  
tmp->... = ...;  
return tmp;

Ferner: Wenn Du irgend einen Fehler auftriffst in der Funktion, dort aber bereits etwas per malloc() alloziert hast, was Du nicht zurückgeben willst, dann musst Du den bereits allozierten Speicher wieder freigeben, sonst hast Du ein Speicherleck und Dein Programm frisst mit der Zeit immer mehr und mehr Speicher.

Ob da noch weitere Probleme drin sind, weiß ich nicht.

Viele Grüße,
Christian

--
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
»I don't believe you can call yourself a web developer until you've built an app that uses hyperlinks for deletion and have all your data deleted by a search bot.«
            -- Kommentar bei TDWTF