为了账号安全,请及时绑定邮箱和手机立即绑定

编程中托管或非托管代码是什么?

编程中托管或非托管代码是什么?

犯罪嫌疑人X 2019-10-24 11:03:43
我在C#代码中使用了特定的命令,效果很好。但是,据说在“非托管”代码中行为不当。什么是托管或非托管代码?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

当您想到非托管时,请考虑机器专用的机器级代码。类似于x86汇编语言。非托管(本机)代码经过编译和链接,可直接在其设计用于的处理器上运行,此刻不包括所有操作系统内容。它不是便携式的,但速度很快。非常简单,精简的代码。

托管代码包括从Java到旧的Interpretive BASIC的所有内容,或在.NET下运行的所有内容。通常将托管代码编译为中间级别的P代码或字节代码指令集。尽管它们看起来类似于汇编语言,但它们不是特定于机器的指令。托管代码将程序与运行它的计算机隔离开来,并创建一个安全边界,在该边界中间接分配所有内存,通常来说,您无法直接访问机器资源,例如端口,内存地址空间,堆栈等。这个想法是在更安全的环境中运行。

要从托管变量转换为非托管变量,您必须先到达实际对象本身。它可能被包裹或装在其他包装中。在32位计算机上,非托管变量(例如“ int”)仅占用4个字节。没有开销或其他包装。从托管代码变为非托管代码,然后再返回的过程称为“ 封送处理 ”。它允许您的程序越过边界。


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 563 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信