Qt连接插槽与来自boost :: shared_ptr的信号

时间:2012-03-11 14:10:36

标签: qt shared-ptr

我有一个主窗口应用程序,当触发快捷方式时,会弹出一个对话框显示一些信息,用户可以在此对话框中进行一些配置,然后将信号发送回主窗口,主窗口会做一些进一步的工作。伪代码如下所示:

void MainWindow::actionConfigure_triggered()
{

    configureDialog = boost::shared_ptr<configure>(new configure(this));
    configureDialog->show();
    connect(configureDialog.get(), SIGNAL(reload()), this, SLOT(clean_reload()));
}

但是当我多次触发此功能时,会发生分段错误。我使用调试器来跟踪执行,执行boost :: checked_delete函数时收到的SIGSEGV。

任何帮助将受到高度赞赏!提前致谢。 我只是想动态创建和删除配置对话框,还是有其他更好的方法来实现它?

1 个答案:

答案 0 :(得分:0)

根据你的回溯,这个bug似乎在configure的析构函数中,并且与shared_ptr几乎没有关系(除了它是调用析构函数的shared_ptr) 检查对象是否有双重删除,如果是,可能还有一些其他引用,而不是shared_ptr删除对象。