Почему небезопасный контекст не требуется для вызова функций C из программы C #? - PullRequest
0 голосов
/ 10 мая 2018

Я недавно начал работать над программированием на C # (раньше я работал только на C). Я узнал, что нам нужно использовать небезопасный контекст, чтобы использовать указатели в программе на C # как Страница документов Microsoft .

Одним из преимуществ неиспользования указателей является

Использование небезопасного кода создает риски безопасности и стабильности.

Но нам не нужно использовать небезопасный контекст для вызова функций в C, которые могут содержать плохо написанный код или уязвимости безопасности. Common Language Runtime Не удается обнаружить проблемы в этих функциях C.

Это мои вопросы

  1. Почему не требуется использовать небезопасный контекст для выполнения функций, написанных на C, даже если CLR не может обнаружить проблемы в этом коде?

  2. В чем может быть преимущество не использования небезопасного контекста для вызова функций, написанных на C?

1 Ответ

0 голосов
/ 10 мая 2018

Почему не требуется использовать небезопасный контекст для выполнения функций, написанных на C, даже если CLR не может обнаружить проблемы в этом коде?

Небезопасный режим не связан с вызываемым небезопасным методом, код C # может быть в равной степени небезопасным. Небезопасный режим - это управление памятью, которое обойдено. Если вы выделяете переменные через CLR (с таким управлением), которые передаются библиотекам C ++, таким как библиотеки Win32, CLR может по-прежнему управлять используемыми сегментами памяти, поскольку они по-прежнему являются переменными CLR.

В чем может быть преимущество не использования небезопасного контекста для вызова функций, написанных на C?

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

...