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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top