我有一个代码。像这样:
int functionA (){
Foo(**,**,**);
return 0;
}
Foo()是一个巨大的功能(超过10,000行)。其中我并不了解all.Foo函数包含一些多线程代码。
现在的问题是,如果我在Foo之后立即“返回”代码,则可以正确运行Foo。
如果我在Foo()和“return”之间插入一些其他代码(甚至是一个非常简单的cout代码)。 Foo函数会很奇怪(部分无法正常运行)。
我调试了这个东西3天了。什么都没找到。
答案 0 :(得分:1)
如果我在Foo()和“return”之间插入一些其他代码(甚至是一个非常简单的cout代码)。 Foo函数会很奇怪(部分无法正常运行)。
听起来像Foo
以某种方式损坏了堆栈。您可能会发现声明冗余变量(从而更改堆栈的内容)“修复”了问题。
我会寻找一种能够在代码中发现内存问题的工具。如果您没有这样的工具,请在分配内存的所有用法中仔细查看 。