.NET 中托管代码和非托管代码的区别


.NET Framework 具有 CLR(公共语言运行时),它执行用 .NET 语言编写的代码。CLR 管理内存需求、安全问题、代码优化、平台特定转换等。对于非托管代码,不存在 CLR,代码由操作系统直接执行。

以下是托管代码和非托管代码之间的一些重要区别。

序号关键点托管代码非托管代码
1执行方式由 CLR(公共语言运行时),也称为托管运行时环境执行。由操作系统直接在底层硬件上执行。
2安全性CLR 处理安全问题并为用 .NET 编写的代码提供内置安全性。没有内置安全性。编写安全可靠的代码是开发人员的责任。
3内存溢出由于 CLR 自动处理内存分配和释放,因此不会发生内存缓冲区溢出。可能发生内存缓冲区溢出,并严重影响程序执行。
4运行时服务CLR 为托管代码提供自动垃圾回收和异常处理。不为非托管代码提供自动垃圾回收和其他服务。
5输出托管代码转换为 IL(中间语言),也称为 MSIL 或 CIL。非托管代码转换为本地语言代码。
6低级访问程序员无法使用托管代码进行低级访问。程序员可以使用非托管代码编写低级访问代码。

更新于:2020年1月6日

3K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告