저는 버그를 재현하고 원인을 찾는 데 큰 어려움을 겪었습니다. 발생은 완전히 무작위로 보입니다. 그래서 나는 초기화되지 않은 변수를 어딘가에서 의심했습니다.()입니다 즉, 내가 DoStuff - DoOtherStuff은() 중 하나를 "B"에서 수행되는 것처럼이로 인해 정의되지 않은 동작이 발생할 수 있습니까?
CMyClass obj; // A
obj.DoStuff();
if (somebool)
{
CMyClass obj; // B
obj.DoStuff();
}
obj.DoOtherStuff();
것 같다, 또는 B.DoStuff()는 종종 실제로 작동 :하지만 나는이 코드 조각을 발견 첫 번째 obj에서 실제로 호출되었습니다.
이 문제가 발생할 수 있습니까? 나는 컴파일러 경고가 있다고 생각하지 않는다. (필자는 도움이 될 수 있기를 희망하면서 코드를 수정했다.) 매우 인 것 같습니다. 실제 코드의이 부분은 내가 찾으려는 버그가있는 곳이지만, 아직 발견하지 못한 다른 이유가있을 수 있습니다.
네 가지 경우가있었습니다. – Srekel
흥미 롭습니다. 그 (것)들에게 동일한 이름을주는 결정은 용의주하다. 물론 논리를 보지 않고서도 저자가 왜 그런 식으로 선택했는지 나는 알지 못합니다. 문제를 해결 한 이름을 바꿨습니까? –
나는 그 (것)들을 똑같이 지명하는 것이 복사 - 붙여 넣기 "실수"이상이 아닌 것을 의심한다. 아직 코드를 테스트하지 않았으므로 아직 작동하는지 확실하지 않습니다. – Srekel