除了一个事实,即代码本身可以直接访问存储器。什么是使用“/不安全”的编译器标志和“固定的”关键词的其他含义?有没有对与我的.exe文件的代码签名和部署影响的任何敲(我的应用程序是桌面只)?

(这不是关于我是否不应该这样做,为什么的是覆盖在我的问题的此处

有帮助吗?

解决方案

不安全的代码是无法证实的,所以你必须要意识到这一点。在一个完全信任的环境中,这不是什么大不了的事,但如果你有哪些有更严格的权限设置其他环境中,那么这可能有对您产生影响。

其他提示

您可以把影响分成两个水桶。

首先是如何影响你的应用环境。使用不安全的代码,您必须在组装完全信任的环境中运行。这是不可能在有限的环境,如某些点击一次的安全设置来运行。原因是,不安全的代码防止确保类型安全的CLR。点击一次,虽然没有安全限制,应该不会有问题。

二是意味着什么方式,你的代码。使用不安全的代码通常涉及使用指针并且特别地,使用它们来通过PInvoke的执行先进编组。没有什么内在的错误或者虽然这些行动。它只是需要CLR和编组不是“安全”的代码做的显著更多的了解。对象钉扎是知识的一个很好的例子,你需要有一个坚定的把握上,你开始使用这些功能之前。

要添加到Jared的参考对象的钉扎...

当使用指针直接在C#访问存储器,则很容易受到在CLR在运行时在存储器中移动的对象。这意味着你的指针可以在所有的内存错误的部分突然点。该固定关键字将针中的对象存储器中,使得这个问题可以被避免。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top