3
我不知道如何解釋我看到的行爲,但是這裏就是了。MS編譯器優化,替代函數中的變量?
我有一個函數foo需要三個參數,一個指針,一個int和另一個指針。當我在foo內部突破時,我可以清楚地看到所有變量都是他們應該的值。但是,當我跨越局部變量聲明時,其中一個參數(int)突然變爲零。但是,函數的其餘部分就像它是原始值一樣執行,所以一切都很好。
這不會發生在完全調試中,但確實發生在常規調試中。這是一種優化嗎?如果是這樣,那叫什麼,我在哪裏可以得到細節?
例子:
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 2009-04-18 18:42:41