答案 0 :(得分:5)
托管代码是在虚拟机下运行的代码,换句话说,其内存由另一个程序(例如C#)“管理”。
非托管代码在底层架构上运行,无需虚拟机,但可能需要运行时库。 (例如C)
进一步阅读:http://en.wikipedia.org/wiki/Managed_code
哎呀,继承人Duplicate。
答案 1 :(得分:0)
托管代码由.NET运行时运行。因此,CLR处理内存管理(也称为垃圾收集)。托管二进制文件是IL代码。 CPU无法直接理解此代码,但CLR会解释该代码。任何具有CLR的环境都可以运行托管程序集。
非托管代码只是经常编译的代码。 CPU直接理解的一系列ASM指令。运行速度更快,但支持框架较少,并且在出生时仅限于可能运行的特定CPU集。
答案 2 :(得分:0)
非托管代码: 想象一下,一些真正被撕裂的平均战士。他们完全免费统治。他们可以随心所欲地去任何他们需要的地方。唯一的问题是他们在每个地方大便。他们把整个地方放大,然后把便便放到他们不应该去的地方。这是C / C ++等。
托管代码: 这些家伙是远房亲戚。更精致。但不太合适和卑鄙。事实上,它们比重量轻微。他们不允许在任何他们想要的地方跑。事实上,有一个边界将它们保存在他们的小玩具笔中。他们也大便,但他们是尿布,所以他们不会到处乱扔东西。通常情况下,一个小家伙来到这里,清理掉他们的尿布。这是Java。
大便显然是记忆。边界是VM。小家伙是垃圾收集者。
我不记得可移植性功能是如何影响这个故事的。