Seltsame temporäre Array Korruption
Frage
Ich versuche, eine Permutation zu schaffen, und ich erhalte diese seltsamen Fehler, wenn ich mein Problem beenden:
Stack around the variable "temp" was corrupted
das Segment der Variable innerhalb einer verschachtelten Schleife für:
for(int i = 0 ; i < str_length ; i++)
{
for(int j = 0 ; j < str_length ; j++)
{
char temp[1];
temp[1] = text[i];
text[i] = text[j];
text[j] = temp[1];
cout << text << endl;
}
}
Text außerhalb der for-Schleife als Zeichenfolge initialisiert, und ich bekomme den gleichen Fehler, wenn ich Temp machen [1] in ein char oder int. Das Programm funktioniert gut, aber ich bin besorgt, warum ich diesen Fehler bin erhalten, weiß jemand, warum?
Lösung
Sie müssen nur char temp;
verwenden und Zugang als temp = text[i];
, etc.
Sie Zugriff auf einen Punkt auf dem Stapel ein Byte PAST temp, die ungültig ist. In diesem Fall, da Sie nur eine einzige char wollen, gibt es keine Notwendigkeit für eine Reihe überhaupt.
Andere Tipps
Temp [1] nicht vorhanden ist, sollten Sie Temp tun [0]. Oder alternativ, wie folgt aus:
char temp;
temp = text[i];
text[i] = text[j];
text[j] = temp;
oder
char temp[1];
temp[0] = text[i];
text[i] = text[j];
text[j] = temp[0];
Verwendung temp[0]
das erste Element zugreifen