Ich versuche, ein Array zu initialisieren, die ich in meiner Klasse Erklärung gemacht habe und ich weiß nicht, was ich falsch mache. Ich verstehe, dass, wenn Sie ein Array in eine Funktion übergeben, es in einen Zeiger auf das erste Zeichen zerfällt. Der Code bricht bei meiner zweiten strcpy() Zeile ab, aber ich bin mir nicht sicher, was ich falsch mache (ich habe sehr wenig Erfahrung mit strcpy()).Verwenden von übergebenen Array, um andere Array zu initialisieren
Mein Code lautet wie folgt:
class TestClass
{
public:
TestClass(char []);
~TestClass();
void Append(TestClass);
char* m_string;
};
TestClass::TestClass(char incstring[])
{
char currentChar = 'a';
int numOfChars = 0;
while (currentChar != '\0') {
currentChar = *(incstring + numOfChars);
numOfChars++;
}
char* tmp = new char[numOfChars-1];
strcpy(tmp, incstring);
strcpy(m_string, tmp);
}
Mein int main() ist einfach:
int main(){
TestClass* test = new TestClass("Hello");
}
Wenn es erwähnenswert ist, ist numOfChars gleich 6 ist, wie es richtig sein sollte.
die Ausnahme ausgelöst wird: „Zugriffsverletzung Schreibort 0xCDCDCDCD.“
'm_string' ist nie initialisiert. –
Bitte benutzen Sie 'std :: string' und ersparen Sie sich den Ärger. Außerdem gibt es keinen Grund für 'new' in Ihrem' main': 'TestClass-Test (" Hello ");' würde genauso gut ohne das Speicherleck funktionieren. – aschepler
Ich habe es nur auf nullptr initialisiert und bekomme die selbe Ausnahme. –