我正试图把我的思想集中在托管和非托管代码的概念上。如果我错了,请纠正我,但是托管代码是被编译成字节码,而非托管代码被编译成机器代码的任何东西。
这是正确的吗?
发布于 2016-07-15 20:51:15
从annakata的回答来看:
托管代码不是编译成机器代码,而是编译成中间语言,由机器上的某个服务解释和执行,因此在(希望!)安全框架,它为您处理诸如内存和线程之类的危险事情。在现代用法中,这通常意味着.NET,但不必这么做。 非托管代码被编译成机器代码,因此由操作系统直接执行。因此,它具有执行托管代码所不能做的破坏性/强大功能的能力。这是所有东西过去都是这样工作的,所以通常它是与像.dlls这样的旧东西相关的
引擎盖下面是怎么回事?托管和非托管是,所有这些都是关于内存的。
在托管代码中,代码本身并不直接操作内存。它为代表代码执行此操作的运行时提供指令。这样,不安全或非法的操作就可以被阻止,代码在半沙箱中运行。托管语言可以而且经常有非托管代码--这就是计算的本质。
想象记忆就像一个巨大的停车场。托管语言和非托管语言之间的区别如下:
用一种管理语言,你走到贴身跟班面前,解释说你要停10辆车。你不知道它们到底停在哪里,但你知道,随时随地,仆人都会乐意为你取回它们。你也不能决定他们停在哪里--你只需要告诉服务员他们需要停车。
在一种非托管语言中,你的工作是挑选地点。你可以把车开到其他的车里,停在残疾人的地方,这样你的表现就会更好(你不需要不断地向贴身服务员传达指令),但你也会犯很多愚蠢/危险的错误。
https://stackoverflow.com/questions/38404743
复制相似问题