문제

코드 자체가 메모리에 직접 액세스 할 수 있다는 사실을 제외하고. "/안전하지 않은"컴파일러 플래그와 "고정 된"키워드를 사용하는 다른 의미는 무엇입니까? 내 .Exe의 코드 서명 및 배포와 관련된 효과에 대한 노크가 있습니까 (내 앱은 데스크탑 전용)?

(이것은 내가이 일을 해야하는지에 관한 것이 아닙니다. 내 질문에 포함됩니다 여기)

도움이 되었습니까?

해결책

안전하지 않은 코드는 검증 할 수 없으므로이를 알고 있어야합니다. 완전한 신뢰 환경에서는 큰 문제가 아니지만 허가 세트가 더 제한된 다른 환경이 있다면 이에 영향을 줄 수 있습니다.

다른 팁

그 의미를 두 개의 양동이에 넣을 수 있습니다.

첫 번째는 그것이 응용 프로그램 환경에 어떻게 영향을 미치는지입니다. 안전하지 않은 코드를 사용하려면 전체 신뢰 환경에서 어셈블리를 실행해야합니다. 보안 설정 일단 클릭과 같은 제한된 환경에서 실행할 수 없습니다. 안전하지 않은 코드가 CLR이 유형 안전을 보장하는 것을 방지하기 때문입니다. 보안 제한이 없으면 한 번 클릭하면 문제가 없습니다.

두 번째는 코드 코드의 의미입니다. 안전하지 않은 코드를 사용하려면 일반적으로 포인터를 사용하고 특히 Pinvoke를 통해 고급 마샬링을 수행하는 데 사용됩니다. 그러나 이러한 행동 중 하나에 본질적으로 잘못된 것은 없습니다. "안전한"코드보다 CLR과 마샬링에 대한 이해가 훨씬 더 많이 필요합니다. 물체 고정은 이러한 기능을 사용하기 전에 확고한 이해가 필요한 지식의 훌륭한 예입니다.

Jared의 객체 고정에 대한 참조에 추가하려면 ...

포인터를 사용하여 C#에서 직접 메모리에 액세스 할 때 런타임에 메모리에서 객체를 이동하는 데 취약합니다. 이것은 당신의 포인터가 메모리의 잘못된 섹션에서 갑자기 지적 할 수 있음을 의미합니다. 그만큼 결정된 키워드는이 문제를 피할 수 있도록 메모리에서 객체를 고정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top