Я написал C ++ dll, для которого я должен написать оболочку C #. В обертке Activex функции c ++ работают правильно. Но в тестовом приложении и оболочке C #, код запускается один раз, и в следующий раз я получаю исключение памяти, как это.
Необработанное исключение в 0x0055365a (msvcr80d.dll) в TestApplication.exe: 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;
}
Я пытаюсь очистить функцию, прежде чем выделить ее. Он работает на первом цикле правильно. Сбой во второй раз.
Я делаю это правильно?
Вот что происходит.
Загрузите его в отладчик, установите точку останова в этой строке или просто пропустите его, и когда произойдет нарушение доступа, отладчик скажет вам точно, что не так.
Других решений пока нет …