myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

C++ Speicher Zugriffsverletzung

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 28.03.14, 16:27   #1
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard C++ Speicher Zugriffsverletzung

Hallo,
ich bekomme beim benutzen eines Programms, welches ich unter Vistual Studio 2010 in c++ geschrieben habe eine Fehlermeldung bezüglich einer Zugriffsverletzung beim Schreiben. Nachdem was ich bisher herausgefunden habe, scheine ich irgendwas mit den Pointern falsch gemacht zu haben. Das ist mit sicherheit ein Anfängerfehler, aber ich finde ihn einfach nicht.

Es geht darum int Werte in einer linearen Liste zu speichern und verarbeiten. Hier der relevante Code:
Code:
...

struct storage{
	int data;
	struct storage *next;
};

struct storage *next = NULL;
struct storage *first = NULL;

...

void insert_func(int number){
	struct storage *p;

	if(first == NULL){
		malloc(sizeof(struct storage));
		first->data = number;
		first->next = NULL;
	}

	else{
		p = first;
		while(p->next != NULL)
			p = p->next;
		malloc(sizeof(struct storage));
		p = p->next;
		p->data = number;
		p->next = NULL;
	}

        showlist();
}
...
In der VS2010 Debug Konsole erhalte ich die Meldung: "Eine Ausnahme (erste Chance) bei 0x00f43573 in sortlist.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.
Unbehandelte Ausnahme bei 0x00f43573 in sortlist.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000."

Position 0x00000000 kommt mir unrealistisch vor. Da ich jedoch Neuling auf dem Gebiet bin, weiß ich trozdem nicht was nun falsch ist. Ich bitte um Ratschläge.
__________________
Gruß Tr3nDy
Tr3nDy ist offline   Mit Zitat antworten
Ungelesen 28.03.14, 16:46   #2
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Debugger so einstellen, dass er wenn Exceptions auftreten anhält. Dann kannst du im Callstack sehen welche Funktion die Exception auslöst.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 28.03.14, 17:43   #3
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard

Gut damit konnte ich das Problem schonmal lokalisieren, danke. Aber ich kann leider nicht herausfinden was das Problem ist. Ich habe die Zeile, an der der Debugger stopt, im Startpost Quelltext rot makiert. Zudem sehe ich noch folgende Info:

Damit kann ich aber nichts anfangen.

EDIT: Ich glaube mein Programm kann nicht auf den Inhalt meines first structs zugreifen. Hm...ich probier mal bisschen rum. Wenn mir jemand helfen kann, nehme ich gerne Ratschläge entgegen.
__________________
Gruß Tr3nDy
Tr3nDy ist offline   Mit Zitat antworten
Ungelesen 28.03.14, 22:21   #4
WilliamBeldum
Anfänger
 
Registriert seit: Feb 2010
Beiträge: 1
Bedankt: 6
WilliamBeldum ist noch neu hier! | 0 Respekt Punkte
Standard

wie wärs mit

Code:
first = malloc(sizeof(struct storage));
WilliamBeldum ist offline   Mit Zitat antworten
Ungelesen 29.03.14, 00:07   #5
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard

Habe es mitlerweile gelöst indem ich einen neuen Konoten mit meinem gewünschten Inhalt erzeugt, und diesen dann dem Anker "first" zugewiesen habe. Danke für die Tips.
__________________
Gruß Tr3nDy
Tr3nDy ist offline   Mit Zitat antworten
Ungelesen 29.03.14, 09:36   #6
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Es wäre für andere hilfreich wenn du den funktionierenden Code poste würdest.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 29.03.14, 12:28   #7
Tr3nDy
Eichhörnchenjäger
 
Benutzerbild von Tr3nDy
 
Registriert seit: Jan 2009
Beiträge: 291
Bedankt: 108
Tr3nDy ist noch neu hier! | 0 Respekt Punkte
Standard

Gerne. Hier der funktionierende Code zum Anhängen von Integer Werten an eine lineare Liste:

Code:
...
struct storage{
	int data;
	struct storage *next;
};

struct storage *next = NULL;
struct storage *first = NULL;
...
void insert_func(int number){
	struct storage *p = new storage;

	if(first == NULL){
		p->data = number;
		p->next = NULL;
		first = p;
	}

	else {
		p->data = number;
		p->next = NULL;

		struct storage *tmp = first;
		while(tmp->next != NULL){
			tmp = tmp->next;
		}

		tmp->next = p;
	}
}
...
__________________
Gruß Tr3nDy
Tr3nDy ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.


Sitemap

().