我有一个主窗口应用程序,当触发快捷方式时,会弹出一个对话框显示一些信息,用户可以在此对话框中进行一些配置,然后将信号发送回主窗口,主窗口会做一些进一步的工作。伪代码如下所示:
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。
任何帮助将受到高度赞赏!提前致谢。 我只是想动态创建和删除配置对话框,还是有其他更好的方法来实现它?
答案 0 :(得分:0)
根据你的回溯,这个bug似乎在configure的析构函数中,并且与shared_ptr几乎没有关系(除了它是调用析构函数的shared_ptr) 检查对象是否有双重删除,如果是,可能还有一些其他引用,而不是shared_ptr删除对象。