0

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.

エラーが発生するコードに実際に問題があることはないと確信しています。以前にバッファまたはスタックの問題があったと思いますが、これが問題が表面化したところです。

このようなものを見たことがありますか?何かアドバイス?

4

0 に答える 0