프레임을 닫으면 프로그램이 계속 충돌합니다. 원인을 두 줄의 문제 코드로 좁혔지만 왜 충돌하는지 잘 모르겠습니다.
TetrisFrame.cpp프레임이 닫히면 wxWidgets 프로그램이 충돌합니다.
TetrisFrame::TetrisFrame()
: wxFrame(0, wxID_ANY, "Tetris")
{
statusController_ = new StatusController;
statusController_->setModel(new Statuses);
statusController_->addView(this);
tetrisController_ = new TetrisController;
tetrisController_->setStatusController(statusController_.get()); // Problem one
tetrisController_->setModel(new TetrisModel);
tetrisController_->addView(new Board(this)); // Problem two
}
TetrisFrame 클래스의 private 멤버 변수 :
wxSharedPtr<StatusController> statusController_;
wxSharedPtr<TetrisController> tetrisController_;
StatusController 클래스 전용 섹션 :
typedef wxSharedPtr<TetrisFrame> ViewPtr;
wxSharedPtr<Statuses> model_;
std::vector<ViewPtr> views_;
보드 클래스의 private 멤버 변수 :
여기 내 코드의 일부입니다wxSharedPtr<TetrisController> controller_;
개
관련 TetrisController 기능 : 나는이 프로그램을 충돌 한 또 다른 문제가 해결 될 때까지
void TetrisController::setStatusController(
StatusController* statusControllerPtr)
{
statusController_ = statusControllerPtr;
}
void TetrisController::addView(Board* viewPtr)
{
views_.push_back(ViewPtr(viewPtr));
viewPtr->setControlller(this);
}
이상하게도 문제가이 프로그램을 충돌하지 않았다. 내 코드에 무슨 문제가 있습니까?
문제는 메모리 액세스와 관련이있는 것으로 보입니다 .- valgrind를 실행 해 보셨습니까? –
valgrind 무엇입니까? – Eva
http://valgrind.org/ –