2016-03-15 2 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

Если вы используете static_data = true в wxImage ctor, вы должны гарантировать, что буфер изображения остается в силе до тех пор, пока объект изображения существует. Наиболее вероятное объяснение заключается в том, что это не так, но невозможно быть уверенным, потому что вы не показываете или, по крайней мере, не говорите нам ничего, о каком-либо коде, выделяющем или освобождающем его.

Ваш последний вопрос очень легко ответить: да, вы должны быть очень обеспокоены тем, что в вашей программе есть фатальная ошибка, и вы должны ее исправить.

+0

Hi VZ. Память для буфера изображения выделяется один раз при запуске программы и освобождается при выключениях программы. Тем не менее, я должен использовать static_data = true, иначе программа сработает (как и ожидалось). Нет утечек памяти, просто много ошибок страницы. – Dragoonfly

+0

Сообщите своему отладчику, чтобы он остановился на исключениях первого шанса (я полагаю, вы используете MSW) и проверьте, где они происходят, на самом деле невозможно сказать больше информации, предоставленной до сих пор. –

Смежные вопросы