2009-03-14 23 views
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; 
    } 
} 

テキストはforループの外で文字列として初期化され、temp [1]をcharまたはintにすると同じエラーが発生します。プログラムはうまく動作しますが、私はなぜこのエラーを受け取るのかという心配です、誰にも分かりませんか?

+0

独特の順列は(int型J = I + 1のために '使用することを検討してください;' –

答えて

15

にアクセスするために使用temp[0]あなただけchar temp;を使用する必要があるとtemp = text[i];としてアクセスも、

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

7

などの最初の要素

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