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ê?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top