strcpy produziert Fehler (0xC0000005)
-
Hallo Leute,
ich wollte mal fragen ob ihr vielleicht wisst warum
strcpy( m_chAdapter, structIdentifier.Description );
einen Fehler verursacht (0xC0000005) sobald die Klasse durch den Destruktor wieder vernichtet wird.
class CClass{ public: ~CClass(); protected: m_chAdapter[512]; }; CClass::Init(){ strcpy( m_chAdapter, structIdentifier.Description ); } CClass::~CClass(){ } // --> Hier kommt dann der Fehler
Ich nutze VC++ 6.0
structIdentifier.Description ist ein char Array mit der Länge von 512 Bytes. Sobald die strcpy Operation weg ist kommt kein Fehler mehr. Der Text in structIdentifier.Description ist lediglich 30 Zeichen lang und NULL Terminiert. In diesen String enthält lediglich druckbare ASCII-Zeichen, keine Steuerzeichen oder ähnliches.Wenn Init nicht aufgerufen wird dann funktioniert es auch ohne Fehler.
Kann mir wer helfen?
MfG
-
hi,
...ich frage mich immer wieder, warum die leute immer noch char-arrays nutzen.mit der klasse string geht das viel komfortabler, und man muss sich nicht immer erst mit den chars rumschlagen.
class CClass{ public: ~CClass(); protected: string m_chAdapter; }; CClass::Init(){ //strcpy( m_chAdapter, structIdentifier.Description ); m_chAdapter=structIdentifier.Description; //ferig } CClass::~CClass(){ }
btw, von welchem datentyp ist dein m_chAdapter ?? ich seh da keinen char
mfg
-
Oh, hab ich vergessen hinzuschreiben. m_chAdapter[512] ist vom Typ char, also
char m_chAdapter[512];
Wo ist denn die Klasse string versteckt?
MfG
-
-Gast- schrieb:
Wo ist denn die Klasse string versteckt?
In den Untiefen des Include-Verzeichnisses deines Compilers, also <string>.
-
was heißt hier untiefen des include-verzeichnisses? da ist doch nur noch eine ordnerebene drin, der rest liegt auf einer eben
-
mika schrieb:
was heißt hier untiefen des include-verzeichnisses? da ist doch nur noch eine ordnerebene drin, der rest liegt auf einer eben