今天我遇到了一个相当奇怪的错误。基本上发生的事情是在函数foo
内部,第一个参数被设置为指针crosssegments
的指针值。所以说crosssegments
位于0x0045,然后iMeaninglessdata
将设置为0x0045。如果我取出iMeaninglessData
并且只有o1
作为第一个参数,那么o1
将等于0x0045。如果在调用函数iMeaningless
之前暂停调试器,则数据crosssegments
具有不同的指针地址。
void Foo(int *iMeaninglessData, handle o1, handle o2, handle o3, int iHeight, int iProfileHeight, handle o4, std::vector<object> * crossSegments, int *iProfileArray)
{
//...code
}
以下是我调用函数的方法:
std::vector<FormSummary> * crossSegmentsTop = new std::vector<FormSummary>();
int iZero = 0;
Foo(&iZero, o1, o2, o3, 10, 50, o4, crossSegmentsTop, iProfileArray);
我对如何发生这种情况感到非常困惑。你认为堆栈可能会发生什么事吗?
谢谢,
答案 0 :(得分:0)
原来,当与发布模式和调试模式一起使用时,Visual Studio 2008调试器中存在一个错误。我正在生成PDB文件,但显然直到你使用该值,例如在命令窗口中,它没有正确定位变量的指针。