2016-03-15 31 views
0

我正在使用wxWidgets顯示實時攝像頭源。wxWidgets - wxImage構造函數導致頁面錯誤

下面的代碼段是我的OnPaint事件的一部分:

wxBufferedPaintDC dc(picturePanel); 
wxMemoryDC mdc; 

wxImage img = wxImage(RES_X, RES_Y, image_buffer, true); 
wxBitmap bmp(img); 
mdc.SelectObject(bmp); 
dc.StretchBlit(0,0,940,940,&mdc,0,0,RES_X,RES_Y); 
mdc.SelectObject(wxNullBitmap); 

「image_buffer」是一個無符號的字符陣列由照相機填充。 我的代碼按預期工作,但我注意到「wxImage img = wxImage(RES_X,RES_Y,image_buffer,true)」僅僅幾分鐘後就會導致幾百萬頁的錯誤。我不知道如何避免這個問題。你認爲這是我應該關注的事情嗎?

回答

0

如果您在wxImage ctor中使用static_data = true,則必須保證只要圖像對象存在,圖像緩衝區就保持有效。最可能的解釋是,它不是,但是不可能確定,因爲你沒有展示或至少告訴我們任何有關任何代碼分配或釋放它的代碼。

但是,最後一個問題很容易回答:是的,你應該非常關心在你的程序中有一個致命錯誤,你必須修復它。

+0

嗨VZ。圖像緩衝區的內存在程序啓動時分配一次,並在程序關閉時釋放。不過,我必須使用static_data = true,否則程序會崩潰(如預期的那樣)。沒有內存泄漏,只有很多頁面錯誤。 – Dragoonfly

+0

告訴你的調試器在第一次機會異常時停止(我假設你使用MSW)並檢查它們在哪裏發生,至於說到目前爲止所給出的信息是不可能的。 –

相關問題