0

我已经编写了一个 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。它在第一个周期正常运行。第二次撞车。

我做对了吗?

4

1 回答 1

1

这是正在发生的事情。

  • 你所拥有的是一个错误
  • 你需要的是一个调试器

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

于 2012-12-17T11:12:03.363 回答