Я нахожусь в процессе обновления с Visual Studio 2010 до 2012, и появилась проблема, которая выглядит как повреждение стека.
У меня есть класс с некоторыми функциями-членами:
class Foo {
double m_d;
void Fn_1();
double Fn_2(double a, double b, double& c);
...
}
void Foo::Fn_1() {
m_d = 1.5;
double a(1), b(2), c, d;
d = Fn_2(a, b, c);
}
double Foo::Fn_2(double a, double b, double& c) {
double x = 0;
c = m_d;
return a + b + c;
}
Я компилирую без оптимизаций и запускаю под отладчиком. Когда я прослеживаю в Foo :: Fn_2 из Foo :: Fn_1, указатель this становится 0xcccccccc, который указывает на унифицированную память. В Foo :: Fn_2 переменная m_d является нежелательной, потому что этот это барахло Когда Foo :: Fn_2 возвращается, Visual Studio выдает ошибку, которая говорит:
Run-Time Check Failure #2 - Stack around the variable 'x' was corrupted.
Я совершенно уверен, что нет ничего плохого в коде, где появляется ошибка. Я думаю, что раньше была проблема с буфером или стеком, и именно здесь проблема возникает.
Вы видели что-нибудь подобное? Любой совет?
Задача ещё не решена.
Других решений пока нет …