Finde den Fehler nicht leider m:(
-
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; class Datum { private: int m_tag; int m_monat; public: Datum (int tag,int monat) { m_tag = tag; m_monat = monat; } void setzeTag(int tag){m_tag = tag;} void setzeMonat(int monat){m_monat = monat;} int gibTag(){return m_tag;} int gibMonat(){return m_monat;} }; class Anschrift { private: char *p_m_ort; char *p_m_strasse; public: Anschrift(){} Anschrift(char *p_strasse,char *p_ort) { char *p_m_strasse = new char[strlen(p_strasse)+1]; strcpy(p_m_strasse,p_strasse); char *p_m_ort = new char[strlen(p_ort)+1]; strcpy(p_m_ort,p_ort); } ~Anschrift() { delete [] p_m_strasse; delete [] p_m_ort; } char * gibStrasse(){return (char*)p_m_strasse;} char * gibOrt(){return (char*)p_m_ort;} }; class Freundin { private: char *m_p_name; Datum *m_p_kennenlernen; Datum *m_p_gebdat; Anschrift *m_p_adresse; public: Freundin(char *p_name,Datum &kennenlernen,Datum &gebdat,char *p_strasse,char*p_ort) { cout <<"ok"; char *m_p_name = new char[strlen(p_name)+1]; strcpy(m_p_name,p_name); cout <<"ok"; Datum *m_p_kennenlernen = new Datum(kennenlernen.gibTag(),kennenlernen.gibMonat()); cout <<"ok"; Datum *m_p_gebdat = new Datum(gebdat.gibTag(),gebdat.gibMonat()); cout <<"ok"; Anschrift *m_p_adresse = new Anschrift(p_strasse,p_ort); } ~Freundin() { delete [] m_p_name; delete m_p_kennenlernen; delete m_p_gebdat; delete m_p_adresse; } void setzeGebdat(Datum *p_gebdat); void setzteKennenlernen(Datum *p_kennenlernen); char *gib_Name(); Datum *gibGebDatum(); Datum *gibKennenlernen(); }; int _tmain(int argc, _TCHAR* argv[]) { char temp[30]; int kennTag,kennMonat; int gebTag,gebMonat; cout << "Herzlichen Willkommen im Freundin Chat !\n"; cout <<"Bitte geben sie einen namen der Freundin ein!\n"; cin >> temp; char *p_name = new char[strlen(temp)+1]; strcpy(p_name,temp); cout <<"\nSo ihre kleine heißt also:"<<p_name; cout <<"\nBitte geben sie an in welchem Ort sie wohnt:\n"; cin >> temp; char *p_ort = new char[strlen(temp)+1]; strcpy(p_ort,temp); cout <<"\nSo ihre kleine heißt also:"<<p_name; cout <<"\nWohnt in dem Ort:"<<p_ort; cout <<"\nUnd in welcher Strasse?\n"; cin >> temp; char *p_strasse = new char[strlen(temp)+1]; strcpy(p_strasse,temp); cout << "\nBitte geben sie den Tag ein an dem sie sie kennengelernt haben:\n"; cin >> kennTag; cout << "\nBitte geben sie den Monat ein wo sie sie kennengelernt haben:\n"; cin >> kennMonat; Datum kennenlern(kennTag,kennMonat); cout << "\nBitte geben sie von "<<p_name<<"den Tag an dem sie Gebrutstag hat ein:\n"; cin >> gebTag; cout << "\nBitte geben sie den GeburtsMonat ein von "<<p_name<< "\n"; cin >> gebMonat; Datum gebdat(gebTag,gebMonat); Freundin frau1(p_name,kennenlern,gebdat,p_strasse,p_ort); getch(); delete [] p_ort; delete [] p_strasse; delete [] p_name; return 0; }
Programm läuft Compiler finden 0 FEHLER aber am ende vom Programm kommt nen Speicher FEHLEr beim ausführen.
Dann das sein das meine delete nicht stimmen ?
Vielen dank für jede hilfe !
Gruß Michael
-
Hey Arschloch! Schonmal was von Code-Tags-Benutzen gehört? Speziell für C++?
-
@***: es geht auch ein bisschen freundlicher
Kannst du dein problem ein bisschen eingrenzen
Ich schätze du hast problme mit der Datum's klasse
mfg
-
***: Ziemlich unangebracht.
Michael630: Schreib [ cpp] vor und [ /cpp] hinter den Quelltext (ohne Leerzeichen). Codeeinrückung wär auch nicht schlecht. Grundsätzlich postet man nur den Code, der für den fehler infrage kommt.
Von deiner mickrigen Fehlerbeschreibung aus würd ich darauf schließen, dass du Array-Grenzen nicht einhälst. Benutz am besten mal den Debugger.
-
Es tut mir leid ich wollte niemanden verärgern das nächste mal werde ich das machen !
+pHead 0xccccccac {pBlockHeaderNext=??? pBlockHeaderPrev=??? szFileName=??? ...} _CrtMemBlockHeader *
pUserData 0xcccccccc void *Das sagt der debugger
Ich fande damit leider nicht viel an !Am schluss wenn das Programm geschlossen wir dann kommt der fehler :
Die Anweisung in "0x0042ce28" verweist auf Speicher in "Oxccccccc0". Der Vorgangg "read" konnte nicht auf dem Speicher durchgeführt werden.
-
Michael630 schrieb:
Es tut mir leid ich wollte niemanden verärgern das nächste mal werde ich das machen !
Hi Michael, du kannst deinen Post auch editieren.
Wenn man's lesen kann macht sich vielleicht auch jemand die Mühe deinen Roman zu überfliegen
-
finix schrieb:
...du kannst deinen Post auch editieren...
nicht als unregistrierter
-
Also bei mir kompiliert das nicht ohne Warnings.
Datum *m_p_kennenlernen = new Datum(kennenlernen.gibTag(),kennenlernen.gibMonat()); Datum *m_p_gebdat = new Datum(gebdat.gibTag(),gebdat.gibMonat()); Anschrift *m_p_adresse = new Anschrift(p_strasse,p_ort);
Das geht so nicht. Überleg dir was dort passiert, du müsstest du schnell selbst auf die Lösung kommen.
Abgesehen davon würde ich mit C++ Strings, arbeiten dann sparst du dir viel hässliches Zeug was du da machst (hab es nur überflogen).
-
Vielen dank asdrubael !!
Das war ein dummer fehler von mir aber ich begreif garnicht das der PC bei mir nicht mal nen warning geschrieben hat.
Jetzt bin ich aber froh danke an alle !!
Ach ja ich werde das mit dem Code nicht vergessen