2011-12-08 203 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對象所擁有的內存。

相關問題