visual studio 2012 — Обнаружение повреждения стека в переполнении стека

Я нахожусь в процессе обновления с 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.

Я совершенно уверен, что нет ничего плохого в коде, где появляется ошибка. Я думаю, что раньше была проблема с буфером или стеком, и именно здесь проблема возникает.

Вы видели что-нибудь подобное? Любой совет?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …