Quelles sont les implications de l'utilisation de code unsafe

mis à part le fait que le code lui-même peut accéder à la mémoire directement. Quelles sont les autres implications de l'utilisation du drapeau" / unsafe "du compilateur et du mot-clé" fixed"? Y a-t-il un impact sur les effets liés à la signature du code et au déploiement de my .exe (mon application est de bureau uniquement)?

(il ne s'agit pas de savoir si je dois ou non faire cela, le pourquoi est couvert dans ma question ici )

22
demandé sur Community 2009-04-01 21:05:38

3 réponses

code non sécurisé n'est pas vérifiable, de sorte que vous devez être conscient de cela. Dans un environnement de confiance totale, ce n'est pas une grosse affaire, mais si vous avez d'autres environnements qui ont un jeu de permission plus restreint, alors cela pourrait vous affecter là-bas.

6
répondu casperOne 2009-04-01 17:20:09

vous pouvez mettre les implications dans deux seaux.

le premier est la façon dont il affecte votre environnement d'application. L'utilisation de codes dangereux nécessite que votre assemblage soit exécuté dans un environnement de confiance totale. Il n'est pas possible d'exécuter dans un environnement restreint tel que certains clics Une fois les paramètres de sécurité définis. La raison étant que le code dangereux empêche le CLR d'assurer la sécurité du type. Cliquez une fois cependant sans restrictions de sécurité ne devrait pas avoir de problème.

le second est ce que cela signifie pour la façon dont vous codez. L'utilisation de codes dangereux implique généralement l'utilisation de pointeurs et en particulier, leur utilisation pour effectuer la formation avancée via PInvoke. Il n'y a cependant rien de mal à ces deux actions. Il suffit d'avoir une meilleure compréhension du CLR et de la formation des numéros de téléphone que le code "sûr". L'épinglage d'objet est un excellent exemple de connaissance dont vous avez besoin pour avoir une prise ferme avant de commencer à utiliser ces fonctionnalités.

12
répondu JaredPar 2009-04-01 17:26:36

pour ajouter à la référence de Jared à l'épinglage d'objet...

lorsque vous utilisez des pointeurs pour accéder à la mémoire directement en C#, vous êtes vulnérable au CLR qui déplace un objet en mémoire à l'exécution. Cela signifie que votre pointeur peut tout d'un coup pointer vers la mauvaise section de la mémoire. Le mot-clé fixe épinglera l'objet en mémoire afin que ce problème puisse être évité.

3
répondu Ed S. 2009-04-01 17:35:27