Zum Inhalt springen

Variable ändern -> Absturz


Technician

Empfohlene Beiträge

Hallo,

ich hab ein ganz seltsames Problem:

Meine Klasse MainReader enthält als Attribut

private:

int datlaenge;

Will ich nun in der MainReader.cpp schreiben

datlaenge = 123;

dann kann man das zwar korrekt compilieren, aber wenn ich das ausführe, stürzt das Programm ab (genau an der Stelle, an der datlaenge = 123 steht).

Das ganze passiert mit allen Variablen, die ich in der MainReader.h deklariere, egal welcher Datentyp und egal ob public oder private.

Deklariere ich Variablen direkt in der Methode (also in der MainReader.cpp), dann funktioniert's

:confused:

Wer kann mir helfen?

Technician

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Technician

Hallo,

ich hab ein ganz seltsames Problem:

Meine Klasse MainReader enthält als Attribut

private:

int datlaenge;

Will ich nun in der MainReader.cpp schreiben

datlaenge = 123;

dann kann man das zwar korrekt compilieren, aber wenn ich das ausführe, stürzt das Programm ab (genau an der Stelle, an der datlaenge = 123 steht).

Das ganze passiert mit allen Variablen, die ich in der MainReader.h deklariere, egal welcher Datentyp und egal ob public oder private.

Deklariere ich Variablen direkt in der Methode (also in der MainReader.cpp), dann funktioniert's

:confused:

Wer kann mir helfen?

Technician

Kannst du das mal als source code posten ?

Und was ist die Fehlermeldung beim Absturz ?

Wenn du eine Klasse in einer .h - Datei deklarierst dann sollte das auch gehen.

Was passiert denn wenn du die Klassendekleration in deine CPP - Datei packst , passiert das dann auch ?

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Goos

Du musst vielleicht schon noch sagen, mit welcher Fehlermeldung es abstuerzt.

Goos

Die übliche Absturz-Fehlermeldung (Roter Kreis mit weißem X drinnen); als Fehlertext: "Die Anweisung in "0x00402758" verweist auf Speicher in "0xcdcdcdd5". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden."

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Technician

Die übliche Absturz-Fehlermeldung (Roter Kreis mit weißem X drinnen); als Fehlertext: "Die Anweisung in "0x00402758" verweist auf Speicher in "0xcdcdcdd5". Der Vorgang "written" konnte nicht auf dem Speicher durchgeführt werden."

Kann es sein das es int * heissen muss und nicht int in deiner Dekleration ?

Wenn du den Sourcecode nicht mal wenigstens auszugsweise postest macht es keinen Sinn

hier weiterzumachen, Hellsehen kann ich noch nicht.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by fmarx2000

Kann es sein das es int * heissen muss und nicht int in deiner Dekleration ?

Wenn du den Sourcecode nicht mal wenigstens auszugsweise postest macht es keinen Sinn

hier weiterzumachen, Hellsehen kann ich noch nicht.

Frank

gerne - is nix weiter kompliziertes, da ich schon alles rauskommentiert hab, was noch war..:


int MainReader::StartReading(LPCTSTR lpszPathName)

{

	FileToRead = lpszPathName;


                //bei der folgenden zeile hängt's; wenn ich die auskommentiere und 

                //stattdessen schreibe "int datlaenge = 123;", dann gibt's keinen Absturz

	datlaenge = 123; 

	return 0;

}



class MainReader : public Reader  

{

public:

	MainReader();

	virtual ~MainReader();

	int StartReading(LPCTSTR lpszPathName);




private:


	int datlaenge;



};



Auch wenn mir die "Komplexität" des Codes nicht post-würdig erscheint - vielleicht hilft es dir trotzdem!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Crush

Probier mal aus, ob der Fehler plötzlich keiner mehr ist wenn Du schreibst: MainReader::datlaenge = 123;

Für mich sieht das so aus, daß Dein Compiler oder der Linker mal wieder spinnt. Da war doch schon heute früh sowas in der Art.

Bringt auch nix.

Jetzt ging es erst mal auch in anderen Klassen nicht mehr; zudem ließen sich auch in Methoden keine Variablen mehr anlegen und befüllen.

Ein Neustart (des Rechners!) brachte auch nix.

Ich hab jetzt mal das Projekt auf ein anderes Laufwerk kopiert - aber das half auch nix :(

Andere Projekte funktionieren einwandfrei, nur mein Reader-Programm...:rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Crush

Da hat´s mit Sicherheit irgendeine interne Compilertabelle oder etwas in den Projekt-Settings zerschlagen. Im Schlimmsten Fall mach ein neues Projekt auf und importiere die Dateien - vielleicht geht´s dann wieder.

...neues Projekt und Dateien importiert --> geht wieder! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by Technician

Hallo,

ich hab ein ganz seltsames Problem:

Meine Klasse MainReader enthält als Attribut

private:

int datlaenge;

Will ich nun in der MainReader.cpp schreiben

datlaenge = 123;

:confused:

Wer kann mir helfen?

Technician

Hätte mich auch gewundert wenn es nicht gegangen wäre. Unter g++ unter SUN ging es ohne Probleme und sonst gibt es ja nicht viele Möglichkeiten um nicht mehr zu gehen.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...