Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Во-вторых, это значит, что вы кодируете. Использование небезопасного кода обычно включает в себя использование указателей и, в частности, их использование для выполнения расширенного сортировки через PInvoke. Однако ничто из этого не имеет ничего общего с любым из этих действий. Это просто требует значительно большего понимания CLR и сортировки, чем "безопасный" код. Связывание объектов - отличный пример знания, которому вам нужно будет твердо понять, прежде чем вы начнете использовать эти функции.

Ответ 3

Чтобы добавить к Jared ссылку на привязку объекта...

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