«Попытка чтения или записи защищенной памяти. Часто это признак того, что другая память повреждена». В программе на 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

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