1

順列を作成しようとしていますが、問題を完了すると、次の奇妙なエラーが表示されます。

Stack around the variable "temp" was corrupted

変数のセグメントは、ネストされた 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;
    }
}

text は for ループの外で文字列として初期化され、temp[1] を char または int にすると同じエラーが発生します。プログラムは正常に動作しますが、なぜこのエラーが発生するのか心配です。理由を知っている人はいますか?

4

3 に答える 3

15

などchar temp;として使用してアクセスするだけです。temp = text[i];

スタック上のポイントに 1 バイト PAST temp にアクセスしていますが、これは無効です。この場合、必要な文字は 1 つだけなので、配列はまったく必要ありません。

于 2009-03-14T20:29:11.023 に答える
10

temp[1] は存在しません。temp[0] を実行する必要があります。または、次のようにします。

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

また

char temp[1];
temp[0] = text[i];
text[i] = text[j];
text[j] = temp[0];
于 2009-03-14T20:29:55.733 に答える
7

temp[0]最初の要素にアクセスするために使用します

于 2009-03-14T20:27:54.833 に答える