누군가가 나를 이해하는 데 도움이 될 수있는 매우 이상한 오류가 발생했습니다. 나는 범위 오류가 벡터를 벗어나지 않고 아주 일관되게 충돌하는 코드를 가지고있다. 이 오류에 대한 또 다른 이상한 점은 오류의 위치를 고정시키려는 코드 전체에서 많은 cout 문을 던지면 충돌이 멈추는 것입니다.C++ : 코드에 try/catch를 추가하면 버그가 사라짐
try {
// my code that is presumably causing problems
}
catch (out_of_range& oor) {
cerr << "Out of Range error: " << oor.what() << endl;
}
이 코드를 추가, 버그가 멀리 갈 것 같다
어쨌든, 추가 검사로, 내가 코드의 일부 주위에/catch 블록을 시도 넣어, 내 구현은 같은입니다. 더 이상 충돌은 없으며 나는 잡기에 cerr 메시지를 보지 못합니다.
이것이 가능한가?
나는 관찰 할 때 버그가 사라질 때 일반적으로 초기화되지 않은 변수를 사용하고 있기 때문에 버그를 발견했습니다. 여분의 코드는 충돌을 막을만큼 메모리 위치를 이동시킵니다. –
관찰 할 때의 동작 변경? 양자 역학이 다시 일어나야합니다. – chris
경고 수준을 올리면 컴파일러에서 초기화되지 않은 변수 사용 및 기타 사항을 catch 할 수 있습니다. –