2012-01-16 1 views
1

프로그램에 반환하지 않습니다 :기능은 오류가 발생하지 않습니다, 그러나 나는 함수를 호출 할 때마다, 나는이 매우 성가신 문제가

간단한 함수가
void renderGame::renderMovingBlock(movingBlock* blockToRender){ 
    sf::Shape blockPolygon; 
    sf::Shape blockLine = sf::Shape::Line(blockToRender->getLineBegin().x,blockToRender->getLineBegin().y,blockToRender->getLineEnd().x,blockToRender->getLineEnd().y, 3.f,movingBlockLineColor); 

    for(auto i = blockToRender->getVertexArray()->begin(); i!=blockToRender->getVertexArray()->end(); ++i){ 
     blockPolygon.AddPoint(i->x, i->y, movingBlockBlockColor); 
    } 

    renderToWindow->Draw(blockLine); 
    renderToWindow->Draw(blockPolygon); 
} 

, 그것은 객체에 대한 포인터를 걸립니다 SFML을 사용하여 화면에 렌더링합니다. 그것은 레일 위에서 움직이는 단순한 다각형입니다.

getVertexArray()을 정점의 객체의 벡터에 대한 포인터를 반환, renderToWindow는 SF에 대한 포인터 :: RenderWindow의이다

내가 가지고있는 아주 이상한 문제는 내가 그것에서 반환하지 않습니다이 함수를 호출 할 수 있다는 것입니다

, VC++ 휴식과 나를 포인트 :

int __cdecl atexit (
     _PVFV func 
     ) 
{ 
     return (_onexit((_onexit_t)func) == NULL) ? -1 : 0; 
} 

내가 여기 이상한 behavoir 받고 있어요, 난 바로 표시() 함수와 시스템 ("일시 중지")을 호출하여 종료하기 전에이 기능을 중지 할 수 있습니다, 그것은 게재합니다 모든 것은 완벽하게 괜찮지 만 한 걸음 더 나아가서 깨지기 쉽습니다.

나는 동적 인 할당 된 객체를 보내고 있는데, 보통의 것을 모두 설정하면 좋을 것이다. 이상한데, 프로그램을 디버그 한 다음 다각형과 선이 올바른 좌표를 가지면 모든 것이 제대로 표시되지만 함수에서 반환 할 수는 없습니다.

+0

이상한 ... 당신이'return; '을 메서드의 끝에 추가하면 어떤 변화가 생기는가? 즉,'renderToWindow-> Draw' 호출에서 복귀합니까? – shinkou

+0

아니요, 아무 것도 변경되지 않았습니다. – dreta

답변

4

이전에 어딘가에있는 스택을 엉망으로 만든 것처럼 함수가 사운드를 반환하지 않으면 대부분 범위를 벗어납니다.

혹시 atexit으로 끝나기 때문에 잡히지 않은 예외가 발생했을 수 있습니다.

어느 쪽이든 - 프로그래밍의 기쁨에 오신 것을 환영합니다 - 지금 당신은 당신의 기능이

(Windows 용 사용 가능한 경우) 당신은 Valgrind의 같은 몇 가지 도구를 시도 할 수 또는 일부 붙어되기 전에 아마 오래 일어나는 오류를 찾을 수있다 다른 경계 체커.

+0

런타임 라이브러리를/MT로 설정 했으므로/MD로 바꿨습니다. 모든 것이 지금 작동합니다. 어떻게하면이 문제가 왜 나에게 알려 졌는지 알 수 있습니다. – dreta

+0

코드에 경쟁 조건이 있습니다. –

+0

설명해 주시겠습니까? – dreta

관련 문제