내가 보는 행동을 설명하는 방법을 모르겠지만 여기에 있습니다.함수의 변수를 대체하는 MS 컴파일러 최적화?
필자에게는 포인터, int 및 다른 포인터의 세 가지 매개 변수를 사용하는 foo라는 함수가 있습니다. 내가 foo 내부를 깰 때, 나는 분명히 모든 변수가 있어야한다는 것을 알 수 있습니다. 그러나 로컬 변수 선언을 넘어서면 매개 변수 중 하나 (int)가 갑자기 0으로 변경됩니다. 그러나 나머지 함수는 원래 값인 것처럼 실행되므로 모두 잘 수행됩니다.
전체 디버그에서는 발생하지 않지만 일반적인 디버그에서는 발생합니다. 이것은 어떤 종류의 최적화입니까? 그렇다면 무엇이 불려지 며 세부 사항을 어디서 구할 수 있습니까?
예 : 최적화 된 코드를 디버깅하고
void foo(void *A, int B, void *C)
{
// B == 5
int X = 3;
char *Y = getSomeStaticString();
// ... some other variable declarations like the above
// B, according to the debugger, is now 0
if (B == 5) {
// But this still executes
}
}
그게 전부 였어! 감사 – Sydius