"Unhandled exception in app.exe (QtGuid4.dll): 0xC0000005: Access Violation"錯誤解決

本文要解決的Qt調試問題截圖如下:

 

起因:在代碼中添加類型爲QColor的二維數組,存儲圖片每個像素。

 

現象:調試時出現上圖所示錯誤。

 

原因:經過百度以及反覆查看代碼,發現在代碼中,有數組越界的情況。因爲定義的時候,數組的兩個維度大小不一樣,而在實

           現 QWidget的重畫事件時,因爲座標系的差別,使得兩個維度的順序對換,使得發生數組越界的情況。

 

詳細解釋:在程序中我定義的數組是QColor color [ Height ] [ Width ], 我的本意是Height代表圖片的高度,Height的初值爲400;Width

                  代表圖片的高度,Width的初值爲600。

                  然而在Qt的paintEvent事件中,QPainter中的 drawPoint( int x,int y )函數中,x表示的是圖片的橫座標,對應數組的Width;

                  y表示圖片的縱座標,對應數組的Height。

                  由於在剛開始沒有意識到座標系與數組維度的對應關係,使得對應錯誤,導致越界。

 

 

如有疑問,請留言!如有問題,求指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章