c++ - Glib::RefPtr 超出范围后的 SIGSEGV?

标签 c++ webkit gtk glib gtkmm

我有这段代码,运行良好:

WebKit::WebView web;
// later:
{
    Glib::RefPtr<WebKit::WebSettings> settings = WebKit::WebSettings::create();
    // do some stuff to the object
    web.set_settings(settings);
}

稍后,当 web 仍在范围内但 settings 已超出范围时,我执行以下操作:

Glib::RefPtr<WebKit::WebSettings> settings = web.get_settings();

应该恢复上面创建的原始设置对象。然而实际发生的是我在 Glib::wrap_auto 中得到一个 SIGSEGV(从 get_settings 调用),输出如下:

GLib-GObject-CRITICAL **: g_object_get_qdata: assertion `G_IS_OBJECT (object)' failed

我的假设是,当第一个 settings 指针超出范围时,它以某种方式破坏了底层对象,尽管它被分配给另一个对象的属性。为什么会这样?大概我在上面做错了什么,但代码对我来说似乎是理智的。 (我假设将对象分配给属性会增加 C 对象的引用计数。)

最佳答案

这很可能是绑定(bind)中的错误。你应该报告它。

关于c++ - Glib::RefPtr 超出范围后的 SIGSEGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711621/

相关文章:

c++ - -> must point to class/struct/union/generic 类型错误

macos - WKWebView 显示白色条,直到窗口移动/调整大小

c - GTK+ C : Pointer Address Changing

macos - Webview 不显示加载的内容

jquery - 具有固定标题、可调整大小的列的 HTML 表格,并且可以调整到小于内容宽度

gtk - Gdk/X11 屏幕截图

c - Gtk+2.0,如何删除附加到 GtkTable 的小部件?

c++ - 如何在 Windows 键盘的物理位置上分配按键?

c++ - 我什么时候必须使用 boost::asio:strand

C++ EOF 命名空间