Понятно, что исключение. Где-то внутри управляемой памяти хранится указатель на нулевой элемент твоего массива. Ты передаёшь указатель на этот указатель. Процедура ждёт указатель на массив, а получает указатель на какое-то место внутри управляемой памяти, которое она радостно перезаписывает, заодно затирая ещё n байт вперёд. После этого попытка прочитать этот массив средой CLR (попытка обратиться по перезаписанному указателю) приводит к ошибкам защиты памяти, т.к. он указывает незнамо куда. А ошибка защиты памяти в CLR - смерть всей Execution engine. Вот как это выглядит в синтаксисе c++: ожидается - void* lpBuffer (реально - byte* lpBuffer) ByVal lpBuffer() = byte* lpBuffer ByRef lpBuffer() = byte** lpBuffer
Ответить
|