2011-10-06 67 views
-1

我有一個代碼。像這樣:VC++返回代碼是做什麼的?

int functionA(){ 
    Foo(**,**,**); 
    return 0; 
} 

Foo()是一個巨大的函數(超過10,000行)。其中我不明白全部.Foo函數包含一些多線程代碼。

現在的問題是,如果我在Foo之後有「返回」代碼,Foo可以正確運行。

如果我在Foo()和「return」之間插入一些其他代碼(甚至是一個非常簡單的cout代碼)。 Foo函數會很奇怪(部分不能正確運行)。

我調試了這個東西3天。什麼都沒找到。

+5

我的水晶球壞了。恐怕你將不得不提供更多細節。 –

+0

@DavidHeffernan:對不起,我害怕我不能。作爲一個麻瓜,我會遇到一些先知。 –

回答

1

如果我在Foo()和「return」之間插入一些其他代碼(甚至是一個非常簡單的cout代碼)。 Foo函數會很奇怪(部分不能正確運行)。

Foo這樣的聲音正在以某種方式破壞堆棧。您可能會發現聲明冗餘變量(並因此更改堆棧的內容)會「修復」問題。

我想找一個工具來查找代碼中的內存問題。如果您沒有這樣的工具,請仔細查看分配內存的所有用法。

+0

謝謝,我明天當我去上班的時候會試試。真的很困惑這件事。從來沒有見過這個。謝謝你的建議 –