-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Sunday 30 December 2001 17:28, Michael Grützner wrote:
Hallo allerseits,
ich habe ein seltsames problem mit einem C++ Programm, was mich fast zur Verzweiflung bringt.
Also: ich habe eine Klasse mit zwei Methoden ungefähr so:
class myClass {
publuc:
das heisst public
bool Init();
Was soll bitte Init sein? Konstruktor? Dann muss es myClass heissen.
protected: bool DateiLaden( char *dateiname ); }
Semikolon fehlt. Hat Dir der Compiler sicher auch gesagt. ;-)
Uebrigens ist es ganz schlechter Stil zwei Sprachen zu mischen!! Das versteht ausserhalb Dtl.s keiner mehr.
die Methode "DateiLaden" wird aus der Methode "Init()" folgendermaßen aufgerufen. "this->DateiLaden( "irgeideinedatei" );".
this-> kannst (und solltest!) Du auch weglassen, ist ja nicht PHP.
Das funktioniert auch alles prima. Wenn ich allerdings den Rückgabe wert von DateiLaden() mittels
bool ergebnis = this->DateiLaden( "irgendeinedatei" );
abfragen will endet das immer mit einem Segmentation fault. Mittels Debugger habe ich rausgefunden, daß der segfault immer in der Zeile nach "return true;" auftritt( dort ist aber nur eine Klammer drin ( } )).
Aha, klingt nach einem Buffer overflow. Pruef mal, ob die groessen saemtlicher Puffer stimmen und Du nicht (auch nur 1 byte) drueberschreibst. Wahrscheinlich erwischst Du auf die Weise den Frame Pointer und der Rechner springt an eine Stelle, wo einfach nix ist.
Dasselbe passiert auch mit der Methode Init(), nur dort passiert immer, egal ob ich den Rückgabewert abfrage oder nicht.
hat jemand eine Ahnung, woran das liegen könnte??????
hmm?
Schick mal den ganzen Source dieser Klasse und wie Du sie verwendest.
Konrad
- -- BOFH excuse #208:
Your mail is being routed through Germany ... and they're censoring us.