Исчезающий SEHException - PullRequest
       2

Исчезающий SEHException

0 голосов
/ 23 октября 2011

У меня есть C / C ++ DLL. У меня есть и приложение ASP.NET, вызывающее эту DLL с помощью P / Invoke. Иногда один из этих вызовов выдает SEHException.

Прямо сейчас для целей тестирования я вызываю функцию с теми же данными, прежде чем что-либо еще.

DllFunctions.MyStructure[] structArray = new DllFunctions.MyStructure[2];
structArray[0].A = 10;
structArray[0].B = 10;
structArray[0].C = 15;
structArray[0].D = 15;
structArray[1].A = 8;
structArray[1].B = 12;
structArray[1].C = 13;
structArray[1].D = 17;
int arraySize = 2;
DllFunctions.MyStructure[] otherArray = new DllFunctions.MyStructure[0];
DllFunction.ProblematicFunction(structArray, arraySize, otherArray, 0);

Когда я запускаю приложение в режиме отладки, иногда мне выдается SEHException, иногда нет. Что может вызвать случайное поведение, подобное этому?

EDIT : функция работает нормально, если вызывается из консольного приложения C ++ с теми же данными.

РЕДАКТИРОВАТЬ : подпись P / Invoke

[DllImport("mylib.dll")]
public extern static MyStructure ProblematicFunction(MyStructure[] structs1, int arrayLen1, MyStructure[] structs2, int arrayLen2);

1 Ответ

2 голосов
/ 23 октября 2011

При запуске приложения в режиме отладки отключается куча с низкой фрагментацией - вы все еще повреждаете память, вам просто везет, и вы теряете некоторую дополнительную память.Если вы хотите увидеть нормальное поведение, запустите приложение, используя Ctrl-F5, затем присоедините к процессу с другим экземпляром VS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...