Ich habe eine Member-Variable, die auf ein Array wchar_t zeigt, die eine Eingabe vom Benutzer über die Konsole enthalten wird.Zugriffsverletzung Schreibort mit dynamischem Array
wchar_t ** mArray;
Dann in meiner Member-Funktion, bitte ich um die Eingabe vom Benutzer und speichere sie in einem std :: wstring. Danach verwende ich die Länge dieses wstring, um Speicher für mArray
dynamisch zuzuweisen, und jedes Zeichen in einer for-Schleife zuzuweisen. Ich bekomme jedoch einen "Zugriffsverletzung Schreibort" -Fehler.
std::wstring givenWstring;
std::cin.ignore();
std::getline(std::wcin, givenWstring);
mArray = new wchar_t*[givenWstring.length()];
for (size_t i = 0; i < givenWstring.length(); i++) {
*mArray[i] = givenWstring.at(i);
}
Ich weiß nicht, warum ich eine Zugriffsverletzung Störung erhalten, weil ich jedes Zeichen aus dem wstring in der dynamischen Array zu jedem Index am zuweisen.
Vielleicht 'wchar_t * mArray;' ist was Sie brauchen? Dann einfach 'mArray = new wchar_t [givenWstring.length()];' und 'marray [i] = givenWstring.at (i);'. – DimChtz
Ihr Array enthält ** nicht initialisierte ** 'givenWstring.length()' ** Zeiger ** auf 'wchar_t'. Wenn Sie versuchen, den Zeiger zu dereferenzieren ('* mArray [i]') - erhalten Sie undefiniertes Verhalten. –
@DimChtz, tut mir leid. Schlägst du vor, dass ich stattdessen wchar_t * benutze? – Skipher