2011-10-06 84 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

谢谢,我明天当我去上班的时候会试试。真的很困惑这件事。从来没有见过这个。谢谢你的建议 –