2011-12-08 25 views
0

可能性の重複:
I need help declaring a temarary array to hold a bitmap picture while i rotate it 90 degreesこれを実行しようとすると、私のプログラムがクラッシュするのはなぜですか?

私はこれを実行しようとすると、なぜ私のプログラムがクラッシュしていますか? また、コードの10行目(+(image.infoHeader.biWidth-c-1);)は、私が望むように動作していません。何が間違っているのを見ますか?

void rotate90(Image& image) 
{ 
    Pixel * tempPixel = new Pixel[(image.infoHeader.biWidth * image.infoHeader.biHeight)]; 
    for(int r = 0; r < image.infoHeader.biHeight; r ++) 
    { 
     for(int c = 0; c < image.infoHeader.biWidth; c++) 
     { 

      int f = c+(r*image.infoHeader.biWidth); 
      int t = (image.infoHeader.biHeight - r - 1) + (image.infoHeader.biWidth-c-1); 
      tempPixel[t] = image.pixels[f]; 
     } 
    } 
    tempPixel = image.pixels; 
    delete[] tempPixel; 
} 
+0

いいえ、あなたの既存の質問を編集する必要があります。 – Jake

+1

あなたは既存の質問を編集する必要があります! –

+0

閉じてしまった:( – Jake

答えて

1

これは問題です:

tempPixel = image.pixels; 
delete[] tempPixel; 

あなたが別のアドレスにnewから得たポインタを上書きします。次にポインタdelete[]を呼び出して、imageオブジェクトが所有するメモリを指し示します。

関連する問題