函数参数意外复制另一个参数指针地址?

时间:2011-10-11 21:29:15

标签: c++ visual-studio-2008 pointers managed-c++

今天我遇到了一个相当奇怪的错误。基本上发生的事情是在函数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);

我对如何发生这种情况感到非常困惑。你认为堆栈可能会发生什么事吗?

谢谢,

  • Alikar

1 个答案:

答案 0 :(得分:0)

原来,当与发布模式和调试模式一起使用时,Visual Studio 2008调试器中存在一个错误。我正在生成PDB文件,但显然直到你使用该值,例如在命令窗口中,它没有正确定位变量的指针。