.NET 托管vs非托管

什么是托管代码?

  • 为获得托管运行时环境执行服务而编写的代码,如 .NET Framework 中的 CLR(公共语言运行时),称为托管代码。它始终由托管运行时环境实现,而不是由操作系统直接执行。

使用托管代码有哪些优势?

  • 它提高了应用程序的安全性,就像当您使用运行时环境时,它会自动检查内存缓冲区以防止缓冲区溢出。
  • 它自动实现垃圾收集。
  • 它还提供运行时类型检查/动态类型检查。
  • 它还提供引用检查,这意味着它检查引用是否指向有效对象,并检查它们是否重复。

托管代码的缺点是什么?

  • 托管语言的主要缺点是不允许您直接分配内存,或者您无法获得 CPU 架构的低级访问权限。

什么是非托管代码?

  • 由操作系统直接执行的代码称为非托管代码。 它始终针对处理器架构并依赖于计算机架构

使用非托管代码有什么优势?

  • 它提供对程序的低级访问。
  • 它还提供对硬件的直接访问。
  • 它允许程序员绕过托管代码框架使用的一些参数和限制。

非托管代码的缺点是什么?

  • 它不为应用程序提供安全性。
  • 由于对内存分配的访问,与内存相关的问题会发生,例如内存缓冲区溢出等。
  • 错误和异常也由程序员处理。
  • 它不关注垃圾收集。

对比

Managed CodeUnmanaged Code
It is executed by managed runtime environment or managed by the CLR.It is executed directly by the operating system.
It provides security to the application written in .NET Framework.It does not provide any security to the application.
Memory buffer overflow does not occur.Memory buffer overflow may occur.
It provide runtime services like Garbage Collection, exception handling, etc.It does not provide runtime services like Garbage Collection, exception handling, etc.
The source code is compiled in the intermediate language known as IL or MSIL or CIL.The source code directly compiles into native languages.
It does not provide low-level access to the programmer.It provide low-level access to the programmer.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值