我编写了一个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。它在第一个周期正常运行。第二次崩溃。
我做得对吗?
答案 0 :(得分:1)
这是正在发生的事情。
将其加载到调试器中,在该行上放置一个断点,或者只是运行它,当发生访问冲突时,调试器会告诉您到底出了什么问题。