2009-03-14 4 views
1

Je cherche à créer une permutation, et je reçois cette erreur étrange quand je termine mon problème:corruption étrange tableau temporaire

Stack around the variable "temp" was corrupted 

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

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 comme une chaîne, et j'obtiens la même erreur lorsque je fais temp [1] dans un char ou un int. Le programme fonctionne bien, mais je me demande pourquoi je reçois cette erreur, est-ce que quelqu'un sait pourquoi?

+0

Si vous voulez permutations uniques Utiliser 'for (int j = i + 1;' –

Répondre

15

Vous avez juste besoin d'utiliser char temp; et acces comme temp = text[i];, etc.

Vous accédez un point sur la pile d'un octet temp passé, ce qui est invalide . Dans ce cas, puisque vous ne voulez qu'un seul caractère, il n'y a pas besoin d'un tableau du tout.

7

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

10

temp [1] n'existe pas, vous devriez faire temp [0]. Ou bien, comme celui-ci:

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]; 
Questions connexes