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_1 から Foo::Fn_2 にトレースすると、this ポインターは、初期化されたメモリを示す 0xcccccccc になります。Foo::Fn_2 では、変数 m_d がジャンクなのでジャンクです。Foo::Fn_2 が戻ると、Visual Studio は次のようなエラーをスローします。
Run-Time Check Failure #2 - Stack around the variable 'x' was corrupted.
エラーが発生するコードに実際に問題があることはないと確信しています。以前にバッファまたはスタックの問題があったと思いますが、これが問題が表面化したところです。
このようなものを見たことがありますか?何かアドバイス?