Estranho corrupção matriz temporária
Pergunta
Eu estou tentando criar uma permutação, e recebo este erro estranho quando eu terminar o meu problema:
Stack around the variable "temp" was corrupted
o segmento da variável é aninhado dentro de um loop for:
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;
}
}
texto está fora inicializado do loop for como uma string, e eu recebo o mesmo erro quando eu faço temp [1] em um char ou um int. O programa funciona bem, mas eu sou preocupação por que estou recebendo este erro, alguém sabe por quê?
Solução
Você só precisa usar char temp;
e acesse-o como temp = text[i];
, etc.
Você está acessando um ponto na pilha temperatura PASSADO um byte, que é inválido. Neste caso, desde que você quer apenas um único caractere, não há necessidade de um array em tudo.
Outras dicas
temp [1] não existe, você deve fazer temp [0]. Ou, alternativamente, como este:
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];
uso temp[0]
para acesso ao primeiro elemento