ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
372
372
EMPFEHLEN
-
Hallo,
Ich hab mal wieder ein Problem. Mir kommt dieses C++ manchmal willkürlich vor
Irgendwas was schon mal funktionierte funktioniert plötzlich nicht mehr, obwohl nichts geändert wurde.
Hier das Problem:
Code cpp:1 2 3
char *dateiname; cout<<"dateiname?"; cin>>dateiname;
Kopf und weiterern Code hab ich mal weggelassen. Den Abbruch verursacht die letzte Zeile
cin>>dateiname. Es gibt keinen Fehler beim Kompilieren aber Programm stürzt beim Ausführen ab:
Es erscheint die Ausgabe "dateiname?", wenn ich irgendetwas (hallo, "hallo", h,...) eingebe kommt der Windows Fehler
"Projekt.exe hat ein Problem festgestellt und muss beendet werden."
Und genau dieser Programmcode hat bisher funktioniert.
Ich hab auch identische #include Anweisungen (wobei hier sowieso keine gebraucht werden oder?)
Wenn ich aus char *dateiname ein int dateiname mache und eine zahl eingebe funktionierts....
(ich will dann später die variable dateiname an eine Funktion laden(char *dateiname) übergeben die mir eine Datei mit dem entsprechenen Namen öffnet.)Geändert von Maxx03 (02.07.07 um 13:13 Uhr)
-
Hallo,
du deklarierst zwar einen char-Zeiger (*dateiname), reservierst aber keinen Speicher dafür. Dass es da dann einen Absturz gibt, ist eigentlich logisch. Mich wundert nur, das es schon mal funktioniert haben soll.
Warum machst du nicht sowas:
GrußCode cpp:1 2 3 4 5 6 7
string dateiname; cout<<"dateiname?"; cin>>dateiname; // ... laden(dateiname.c_str());
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
Ok damit gehts. Danke. Ja komisch, aber es hat davor mal genau so funktioniert.
Das mit dem Speicherplatz reservieren hab ich leider nicht ganz verstanden (rookie). Ist das das mit malloc
wenn ich ein zeiger auf char so initialisieren würde
Code cpp:1 2
char *array= new char[10];
dann hätte ich dadurch auch speicher für 10 character reserviert oder ?
-
Genau so ist es.
Mit "new" reservierter Speicher muss nach Gebrauch wieder freigegeben werden, sonst gibt's Speicherlöcher:
Du könntest aber auch schreiben:Code cpp:1 2 3 4 5
char *array= new char[10]; // ... delete [] array;
Damit wird der Speicher auf dem lokale Stack angelegt und man braucht sich nicht um's Aufräumen zu kümmern.Code cpp:1
char array[10];
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
Ähnliche Themen
-
VC6 Absturz
Von sheel im Forum C/C++Antworten: 9Letzter Beitrag: 07.08.09, 19:13 -
pc absturz
Von kammscheibe im Forum Microsoft WindowsAntworten: 15Letzter Beitrag: 05.01.09, 21:36 -
Absturz der GUI
Von taouri im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 22.11.06, 20:32 -
VS-6-Absturz
Von MortenV im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 01.05.06, 21:29 -
Absturz
Von cordu im Forum Cinema 4DAntworten: 2Letzter Beitrag: 13.06.05, 09:21





Zitieren

Login






