메인 윈도우 응용 프로그램이 있습니다. 바로 가기가 실행되면 대화 상자에 정보가 표시되고 사용자가이 대화 상자에서 일부 구성을 수행 한 다음 다시 신호를 보냅니다. 메인 윈도우, 메인 윈도우는 몇 가지 추가 작업을 수행합니다. 의사 코드는 다음과 같습니다.Qt는 boost :: 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()));
}
그러나이 함수를 여러 번 트리거하면 분할 오류가 발생합니다. 디버거를 사용하여 실행을 추적하고 SIGSEGV는 boost :: checked_delete 함수를 실행할 때 받았습니다.
도움이 될 것입니다! 미리 감사드립니다. 구성 대화 상자를 만들고 동적으로 삭제하기를 원하십니까? 아니면이를 구현하는 다른 더 좋은 방법이 있습니까?
구성 대화 상자가 닫힐 때 스마트 포인터를 사용할 필요가 없다고 생각합니다. 소멸자를 호출해야합니다. 동적으로 할당 된 메모리가이 시점에서 해제되어야하므로 메모리 누수가 발생합니다. 몇 번이나 기능을합니다. – nils
대화 상자는 setAttribute (Qt :: WA_DeleteOnClose)를 설정하지 않으면 닫히면 삭제되지 않습니다. –
감사합니다. 당신 말이 맞습니다. – nils