Win 32 Dll在Activex中运行但在C ++ / c #Test Application中崩溃

时间:2012-12-17 07:52:37

标签: c# c++ dll activex

我编写了一个C ++ DLL,我必须编写一个C#包装器。在Activex包装器中,c ++函数正常工作。但是在测试应用程序和C#包装器中,代码运行一次,在下一次我得到这样的内存异常。

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。它在第一个周期正常运行。第二次崩溃。

我做得对吗?

1 个答案:

答案 0 :(得分:1)

这是正在发生的事情。

  • 您拥有的是错误
  • 您需要的是调试器

将其加载到调试器中,在该行上放置一个断点,或者只是运行它,当发生访问冲突时,调试器会告诉您到底出了什么问题。