目录:
定义-不安全是什么意思?
不安全是一种C编程语言(C#)关键字,用于表示不受.NET Framework公共语言运行时(CLR)或非托管代码管理的一段代码。 不安全用于类型或成员的声明中,或用于指定块代码。 当用于指定方法时,整个方法的上下文是不安全的。
不安全的代码提供了与非托管应用程序编程接口(API)或系统调用的良好互操作性,并且充当了第三方动态链接库(DLL)的兼容接口,这些动态链接库需要用于参数传递的指针。 当过程内容需要检查或分析时,也可能在调试期间使用不安全的代码。
技术百科解释不安全
不安全数据是指不受CLR控制的已分配内存数据,例如Windows的句柄或通过新方法分配的指针。
不安全代码是指访问非托管内存的语句或方法,包括:
- 调用Windows API
- 涉及具有指针或性能关键代码的结构的组件对象模型(COM)方法接口组件的调用。
不安全代码主要在操作涉及指针时使用,并且通常在代码在托管上下文之外执行时使用。 不安全的代码编译要求使用编译命令指定“ / unsafe”选项。
在完全信任的环境中,不安全的代码执行需要CLR。 但是,CLR不会验证不安全的代码。 CLR支持不安全代码,以提供对非托管内存代码的直接访问,出于性能原因,有时首选使用此代码。
因为CLR维护类型的安全性,所以C#不像C / C ++那样在托管代码中支持指针算术。 unsafe关键字允许在非托管代码中使用指针。 但是,由于未遵循严格的对象访问规则,因此无法保证安全性。 例如,Java运行时环境(JRE)中没有提供指针操作功能。
由于不安全的代码固有的复杂语法以及与内存相关的错误(例如堆栈溢出,访问和覆盖系统内存)的可能性,因此不安全的代码可能会带来稳定性和安全性问题。 避免潜在的错误或安全风险对开发人员特别重要。