Question

J'essaie de créer une permutation et je reçois cette erreur étrange lorsque je termine mon problème:

Stack around the variable "temp" was corrupted

le segment de la variable est dans une boucle imbriquée:

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;
    }
}

le texte est initialisé en dehors de la boucle for en tant que chaîne, et j'obtiens la même erreur lorsque je transforme temp [1] en char ou en int. Le programme fonctionne bien, mais je me demande pourquoi je reçois cette erreur. Quelqu'un sait-il pourquoi?

Était-ce utile?

La solution

Vous devez simplement utiliser char temp; et y accéder en tant que temp = texte [i]; , etc..

Vous accédez à un point de la pile, un octet, PAST temp, qui n'est pas valide. Dans ce cas, comme vous ne voulez qu'un seul caractère, vous n'avez pas besoin d'un tableau.

Autres conseils

temp [1] n'existe pas, vous devriez faire temp [0]. Ou alternativement, comme ceci:

char temp;
temp = text[i];
text[i] = text[j];
text[j] = temp;

ou

char temp[1];
temp[0] = text[i];
text[i] = text[j];
text[j] = temp[0];

utilisez temp [0] pour accéder au premier élément

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top