0

C#ラッパーを作成する必要があるC++dllを作成しました。ActiveXラッパーでは、c++関数は正しく機能しています。しかし、テストアプリケーションとC#ラッパーでは、コードが1回実行され、次回はこのようなメモリ例外が発生します。

TestApplication.exeの0x0055365a(msvcr80d.dll)で未処理の例外:0xC0000005:アクセス違反の書き込み場所0x00000001。

以下に示すmemsetラインでのエラーを示すスタックトレース。

VOID Clear () {

    if (byFeature != NULL) {
            memset (this->byFeature, '\0', VF_MAX_FEATURES_SIZE - 1 ); ==> crash at this line 
        this->iFeatureSize = 0;
    }
    else
        this->iFeatureSize = 0;

    this->iMinutiaeCount = 0;
    this->G = 255;

}

割り当てる前にbyFeatureをクリアしようとしています。最初のサイクルで適切に実行されます。2回目にクラッシュします。

私はそれを正しくやっていますか?

4

1 に答える 1

1

これが何が起こっているかです。

  • あなたが持っているのはバグです。
  • 必要なのはデバッガです。

それをデバッガーにロードするか、その行にブレークポイントを設定するか、または単に実行すると、アクセス違反が発生すると、デバッガーは何が問題なのかを正確に教えてくれます。

于 2012-12-17T11:12:03.363 に答える