题
例如,在GlowCode探查网站看时,它说:
“GlowCode 6.2和x64轮廓天然的,管理,和混合的C ++,C#,.NET代码”
这是什么意思?
解决方案
本机代码是其内存是不是“管理”,如,内存不释放你(++” C删除和C的自由,例如)的代码,没有引用计数,无垃圾收集。托管代码,你猜对了,是它的内存是免费的,为您分配,垃圾收集和其他东西。代码
混合代码是当你已设法调用到非托管代码层。通常情况下,当你有一个纯的非托管C ++ DLL和您使用P-从.NET称之为/调用。
其他提示
本机代码被编译直接与OS合作。但是托管代码,预编译(在Java中发言字节码),但随后被即时编译器在运行时处理为本地代码。托管代码具有在不同的操作系统上运行的潜在的有趣的副作用,因为不创建机器代码,直到虚拟机实际使用它。这样一来,您就可以在Windows上运行.NET应用程序,并在Linux或Mac安装了单声道运行时运行它们。便携性是不是干净的作为当前Java是(因为微软的自然封闭的架构),但概念。
如果您正在运行一个非托管的应用程序,代码已经被编译为指定的OS /硬件上运行。任何移植到另一个OS /指令集将丢失,必须重新编译以执行
本地代码被写入,它在其上运行,并且直接由所述处理器执行的计算机的“天然的”机器语言。
托管代码被写入,需要另一个程序来运行一个特殊的语言(即,管理)它。此其它程序通常被称为一个解释器,因为它解释特殊的语言。
C和C ++程序是天然的。
Java和C#(以及与此有关的所有.NET语言)进行管理。
托管C ++是C ++的一种特殊形式,在.NET解释程序运行。
一个混合程序是使用代码,本机和托管的程序。
这公共语言运行库(CLR)的控制下运行的代码被称为托管代码。这并不在CLR下运行代码被称为本机代码。