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