Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Variable ändern -> Absturz

Empfohlene Antworten

Veröffentlicht

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

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

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."

Originally posted by fmarx2000

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

passiert das gleiche... stürzt auch ab...

der mag nur Variablen innerhalb von Methoden:(

Aber eben nur bei dieser Klasse; bei allen anderen ist's okay:rolleyes:

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

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!

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.

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:

Vielleicht hast ja auch irgendwo diverse irgendwo versteckte Einstellungen verdreht :)

Hast schonmal probiert die MainReader Klasse in ein neues Projekt zu packen?

Goos

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.

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! :)

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.