【问题标题】:wxWidgets - wxImage constructor causes page faultswxWidgets - wxImage 构造函数导致页面错误
【发布时间】:2016-03-15 12:11:27
【问题描述】:

我正在使用 wxWidgets 来显示实时摄像机源。

以下代码 sn-p 是我的 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)”在几分钟后就导致了几百万个页面错误。我不知道如何避免这个问题。你认为这是我应该关心的事情吗?

【问题讨论】:

    标签: wxwidgets


    【解决方案1】:

    如果您在wxImage ctor 中使用static_data = true,则必须保证只要图像对象存在,图像缓冲区就保持有效。最可能的解释是它不是,但无法确定,因为您没有显示或至少告诉我们任何有关分配或释放它的代码。

    您的最后一个问题很容易回答:是的,您应该非常担心您的程序中存在致命错误并且您必须修复它。

    【讨论】:

    • 嗨,VZ。图像缓冲区的内存在程序启动时分配一次,在程序关闭时释放。不过,我必须使用 static_data = true,否则程序会崩溃(如预期的那样)。没有内存泄漏,只有很多页面错误。
    • 告诉你的调试器在第一次机会异常时停止(我假设你使用 MSW)并检查它们发生在哪里,到目前为止给出的信息真的不可能说更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多