Сегодня я столкнулся с довольно странной ошибкой. По сути, то, что происходит, находится внутри функции foo
, первый параметр которой устанавливается на значение указателя указателя crosssegments
. Скажем, crosssegments
- это местоположение в 0x0045, тогда iMeaninglessdata
будет установлено в 0x0045. Если я уберу iMeaninglessData
и просто в качестве первого параметра выберу o1
, то o1
будет равно 0x0045. Если я сделаю паузу в отладчике до вызова функции iMeaningless
data и 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);
Я очень смущен тем, как это может происходить. Как вы думаете, что-то могло случиться со стеком?
Спасибо,