退出时出现开罗错误消息

时间:2010-08-31 16:03:22

标签: c++ cairo

我目前正在使用Cairo进行一些测试来替换现有的GDI / GDI + Visual C ++ 2010中的代码似乎工作正常,但我得到了 每次关闭我的应用程序时出现错误消息:

“CairoTest.exe中0x68e629dc的第一次机会异常:0xC0000005: 访问冲突读取位置0xabababa7“

如果我在调用cairo_paint(cr)时调用此错误 应用程序正在运行 - 如果我评论此行,它就会消失。该 到目前为止我的应用程序中只有Cairo代码是:

CChildView::CChildView()
{
     testsurface = cairo_image_surface_create_from_png("BlackShinyBackground.png");
}

CChildView::~CChildView()
{
     cairo_surface_destroy(testsurface);
}

void CChildView::OnPaint()
{
     CPaintDC dc(this);

     cairo_surface_t *surface = cairo_win32_surface_create(dc.m_hDC);
     cairo_t *cr = cairo_create (surface);

     cairo_set_source_surface(cr, testsurface, 0, 0);
     cairo_paint(cr);
     cairo_destroy (cr);
     cairo_surface_destroy (surface);
}

有人能指出我做错的方向吗?

就像我说的那样,代码看起来工作正常,但我不喜欢只是在不知不觉中看到错误。

1 个答案:

答案 0 :(得分:1)

第一次机会异常并不一定意味着什么 - 它们是Windows内存管理的常规部分。基本上,只要您访问虚拟内存中的某些内容(例如,在页面文件上),就会创建第一次机会异常。操作系统通过将所需数据分页到物理内存来处理它,然后您的代码可以继续执行。

如果/当你看到第二次机会异常时,这意味着操作系统没有处理异常,所以除非你的代码中有一个处理程序,否则很可能是标志着一个真正的问题。

相关问题