Pregunta

Aparte del hecho de que el código en sí puede acceder directamente a la memoria.¿Cuáles son las otras implicaciones de usar el indicador del compilador "/unsafe" y la palabra clave "fixed"?¿Hay algún efecto en cadena relacionado con la firma de código y la implementación de mi .exe (mi aplicación es solo de escritorio)?

(Esto no se trata de si debería o no hacer esto, el por qué está cubierto en mi pregunta aquí)

¿Fue útil?

Solución

código no seguro no es verificable, por lo que tiene que ser consciente de ello. En un entorno de plena confianza, eso no es un gran problema, pero si usted tiene otros entornos que tienen un conjunto de permisos más restringido, entonces esto podría impactar allí.

Otros consejos

Usted puede poner las implicaciones en dos cubos.

La primera es cómo afecta a su entorno de aplicación. El uso de código no seguro requiere que su montaje se ejecuta en un entorno de plena confianza. No es posible ejecutar en un entorno restringido tal como cierta haga clic una vez la configuración de seguridad. La razón es que evita que el código no seguro CLR de garantizar la seguridad de tipos. Haga clic una vez, aunque sin restricciones de seguridad no debe tener un problema.

El segundo es lo que significa para la forma de código. El uso de código no seguro normalmente implica el uso de punteros y, en particular, su utilización para avanzados de clasificación realizado a través de PInvoke. No hay nada inherentemente malo en cualquiera de estas acciones sin embargo. Sólo requiere significativamente mayor comprensión de la CLR y de clasificación que el código "seguro" hace. pinning objeto es un gran ejemplo de los conocimientos que había necesidad de tener un control firme sobre existía antes de usar estas características.

Para añadir a la referencia del objeto a fijar Jared ...

Cuando el uso de punteros acceder a la memoria directamente en C #, que son vulnerables a la CLR mover un objeto en torno a la memoria en tiempo de ejecución. Esto significa que el puntero Que todos un punto repentino en la sección de memoria incorrecto. El palabra clave fijo será fijar el objeto en la memoria de modo que este problema puede ser evitado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top