C # странная ошибка исключения - PullRequest
2 голосов
/ 20 ноября 2011

Я вызываю функцию из нативного dll .NET следующим образом:

string v = myDLL.GetValueFromString("header");
MessageBox.Show(v);

При выполнении программы я получаю странную ошибку (в строке, которая выполняет эту функцию):чтение или запись в защищенную память. Это часто указывает на то, что другая память повреждена. "

Что означает это сообщение об ошибке?И есть ли способ решить эту проблему?

1 Ответ

5 голосов
/ 20 ноября 2011

Это AccessViolationException. Это «сложное» исключение, процессор фактически аварийно завершает работу, пытаясь выполнить машинный код. Обычно потому, что он пытается получить доступ к не отображенной памяти через неверное значение указателя. Это слишком часто встречается в нативном коде, особенно в коде, который работает со строками Си.

Я предполагаю, что вы не написали этот код, вам понадобится помощь автора. Пошлите ему небольшую тестовую программу, которая воспроизводит проблему. Если вы хотите отладить это самостоятельно, вам нужен исходный код для DLL и переключите отладчик в смешанный режим, чтобы вы могли отлаживать как ваш C #, так и собственный код. Project + Properties, вкладка Debug, отметьте опцию «Включить отладку неуправляемого кода». Установите точку останова в нативной функции, которую вы вызываете.

...