在本文中,我们将学习.Net中托管代码和非托管代码之间的区别,以及如何确定是托管代码还是非托管代码?
有以下几点可以清除托管代码和非托管代码之间的区别:
托管代码是由公共语言运行时而不是操作系统执行的代码。非托管代码是由公共语言运行时环境之外的操作系统直接执行的代码。
托管代码编译器首先将托管代码编译为MSIL代码,也称为CIL代码。这个MSIL代码不依赖于任何机器配置,我们可以在不同的机器上执行它。非托管代码直接编译为本地代码或机器代码,具体取决于机器配置。
在由CLR处理的代码的托管代码中,CLR提供了不同的服务,例如垃圾收集,异常处理,安全支持和类型检查。而在非托管代码分配,内存和类型安全性未分配的情况下,软件开发人员应注意。
如果未正确处理非托管代码,则可能导致内存空缺或内存泄漏。
非托管代码的示例是Win32 API和ActiveX组件,它们的执行超出了公共语言运行时的范围。