Каковы последствия использования небезопасного кода

StackOverflow https://stackoverflow.com/questions/706495

Вопрос

Не считая того, что сам код может обращаться к памяти напрямую.Каковы другие последствия использования флага компилятора «/unsafe» и ключевого слова «fixed»?Есть ли какие-либо последствия, связанные с подписанием кода и развертыванием моего .exe-файла (моё приложение предназначено только для настольных компьютеров)?

(Речь идет не о том, стоит ли мне это делать, почему описано в моем вопросе здесь)

Это было полезно?

Решение

Небезопасный код не поддается проверке, поэтому вам следует об этом знать.В среде полного доверия это не имеет большого значения, но если у вас есть другие среды с более ограниченным набором разрешений, то это может повлиять на вас.

Другие советы

Вы можете разделить последствия на две группы.

Во-первых, как это влияет на среду вашего приложения.Использование небезопасного кода требует, чтобы ваша сборка запускалась в среде полного доверия.Невозможно работать в ограниченной среде, такой как определенные настройки безопасности Click Once.Причина в том, что небезопасный код не позволяет CLR обеспечить безопасность типов.Нажмите «Один раз», хотя без ограничений безопасности проблем возникнуть не должно.

Второе — это то, что это означает для способа написания кода.Использование небезопасного кода обычно предполагает использование указателей и, в частности, их использование для выполнения расширенного маршалинга через PInvoke.Однако ни в одном из этих действий нет ничего плохого.Просто это требует значительно большего понимания CLR и маршалинга, чем «безопасный» код.Закрепление объектов — отличный пример знаний, которые вам необходимо усвоить, прежде чем вы начнете использовать эти функции.

Чтобы добавить к упоминанию Джареда о закреплении объектов...

При использовании указателей для прямого доступа к памяти в C# вы уязвимы перед тем, как CLR перемещает объект в памяти во время выполнения.Это означает, что ваш указатель может внезапно указать на неправильный раздел памяти.А Зафиксированный Ключевое слово закрепит объект в памяти, чтобы можно было избежать этой проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top