.NET中托管代码和非托管代码的区别
托管代码是由 .NET Framework 中的 CLR(公共语言运行时)管理的代码。而非托管代码是由操作系统直接执行的代码。以下是托管代码和非托管代码之间的一些重要区别:
托管代码 | 非托管代码 |
---|---|
由托管运行时环境执行或由 CLR 管理。 | 由操作系统直接执行。 |
为用 .NET Framework 编写的应用程序提供安全性。 | 不为应用程序提供任何安全性。 |
不会发生内存缓冲区溢出。 | 可能会发生内存缓冲区溢出。 |
提供垃圾收集、异常处理等运行时服务。 | 不提供垃圾收集、异常处理等运行时服务。 |
源代码是用称为 IL 或 MSIL 或 CIL 的中间语言编译的。 | 源代码直接编译成本地语言。 |
不提供对程序员的低级访问。 | 提供对程序员的低级访问。 |