2009-05-19 33 views

回答

5

托管代码是虚拟机下运行的代码由另一程序(C#例如),换句话说,它的存储器被“管理”。

非托管代码在底层架构上运行,无需虚拟机,但可能需要运行时库。 (C例如)

进一步阅读:http://en.wikipedia.org/wiki/Managed_code

哎呦,继承人Duplicate

0

托管代码由.NET运行时运行。因此CLR处理内存管理(又名垃圾收集)。托管的二进制文件位于IL代码中。该代码不直接被CPU理解,而是由CLR解释为CPU。任何具有CLR的环境都可以运行托管程序集。

非托管代码只是定期编译的代码。 CPU直接理解的一系列ASM指令。运行速度更快,但支持框架更少,而且在出生时只限于一组可能运行的CPU。

0

有一天我听到了一个相当不错的故事。如果原来的人来了,看到这个,我会信任他。我不确定他是否会要我放弃他的名字。

非托管代码: 想象一下一些真正扯平的战士。他们有完全免费的统治。他们可以做任何他们想做的事,然后去任何他们需要的地方。唯一的问题是,他们在任何地方呕吐。他们呕吐整个地方,并将其拖入不应有的地方。这是C/C++等。

托管代码: 这些家伙是远亲。更精致。但几乎没有那么合适和意味。事实上,他们在体重方面略有下降。他们不允许跑到他们想要的地方。事实上,有一个边界将他们留在他们的小玩具笔中。他们也是粪便,但他们是尿布,所以他们不会到处都是粪便。通常一个小家伙来清理他们的尿布。这是Java。

大便显然是记忆。边界是虚拟机。小家伙是垃圾收集者。

我只是不记得携带功能是如何进入这个故事。

+0

我也对随便的评论说,.NET和MFC程序员可以在餐桌上区分开来,因为MFC程序员不希望菜肴自己消失。 – Tormod 2009-05-19 08:55:17