void EventCloseServer::act(){
Server* serv = Program()::getServer();
if (serv != NULL) {
if (serv->running()) {
serv->stop();
serv->sync();
}
delete (serv);
}
}
이 코드를 두 번 실행하면 문제가 발생합니다. 처음으로 함수는 delete(serv)
에 올바르게 도착합니다. 두 번째로 serv->running()
과 serv != NULL
다음에 호출하기 전에 세그먼트 화 오류가 발생합니다. 왜 두 번째 실행이 첫 번째 if
문 내부에 들어 있는지 이해할 수 없습니다. 다음 경우에 myObject = NULL
이 발생한다는 것은 사실이 아닙니까?C++ 삭제 분할 오류
Class* myObject = new Class();
/***/
delete(myObject); /* myObject = NULL ? */