«Попытка чтения или записи защищенной памяти. Часто это признак того, что другая память повреждена». В программе на C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 «Попытка чтения или записи защищенной памяти. Часто это признак того, что другая память повреждена». В программе на C#

Сообщение Anonymous »

мой код
//Marshal.Copy(bytes, 0, P2request, Marshal.SizeOf(request));
Marshal.StructureToPtr(request, P2request,true);


этот код C# предназначен для связи с оборудованием с помощью C++ dll, поэтому мне следует использовать Marshal.StructureToPtr для передачи структуры в указатель, но когда я это сделаю, это вызовет ошибку («Попытка для чтения или записи в защищенную память. Часто это признак того, что другая память повреждена».)
Хотя ошибка устранена, я не могу понять, почему? Надеюсь, кто-нибудь сможет помочь!
Как только я добавлю Marshal.Copy() для очистки буферов, ошибка исчезнет. это означает, что Маршал сможет записать его только тогда, когда я очищаю буфер?
// it works
Marshal.Copy(bytes, 0, P2request, Marshal.SizeOf(request));
Marshal.StructureToPtr(request, P2request,true);


И когда я установлю для третьего параметра значение false (это Marshal.StructureToPtr(request, P2request,false);), проблема тоже будет решена.
//it works
//Marshal.Copy(bytes, 0, P2request, Marshal.SizeOf(request));
Marshal.StructureToPtr(request, P2request,false);



Подробнее здесь: https://stackoverflow.com/questions/788 ... ion-that-o
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»