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