例如,在查看GlowCode profiler网站时,它会显示:
GlowCode 6.2和x64配置文件本机、托管和混合的C++、C#、.NET代码
它们是什么意思?
发布于 2009-05-13 02:23:01
本机代码是内存不是“托管”的代码,例如,内存不会为您释放(例如,C++的delete和C的reference ),没有引用计数,没有垃圾回收。你猜对了,托管代码是一种代码,它的内存是空闲的,并为你分配了垃圾回收和其他好处。
混合代码是指调用非托管层的托管代码。通常,当您有一个纯非托管invoke动态链接库并使用P/ C++从.NET调用它时。
发布于 2009-05-13 02:33:42
本机代码经过编译,可直接与操作系统协同工作。但是,托管代码是预编译的(Java语言中的字节码),然后由即时编译器在运行时将其处理为本机代码。托管代码有一个有趣的副作用,即有可能在不同的操作系统上运行,因为机器代码直到VM实际使用它时才会创建。这样,你就可以在Windows上运行.NET应用程序,也可以在安装了Mono运行时的Linux或Mac上运行它们。可移植性目前不像Java那样干净(因为Microsoft的自然封闭体系结构),但概念仍然存在。
如果您正在运行非托管应用程序,则代码已编译为在指定的操作系统/硬件上运行。任何到另一个操作系统/指令集的可移植性都会丢失,必须重新编译才能执行。
发布于 2009-05-13 22:27:29
本机代码是用运行它的计算机的“本机”机器语言编写的,并由处理器直接执行。
托管代码是用一种特殊的语言编写的,需要另一个程序来运行(即管理)它。另一个程序通常被称为解释器,因为它解释特殊的语言。
C和C++程序都是原生的。
Java和C# (以及所有的.NET语言)都是托管的。
托管C++是在.NET解释器中运行的C++的一种特殊形式。
混合程序是使用本机代码和托管代码的程序。
https://stackoverflow.com/questions/855756
复制相似问题