本机代码和托pipe代码之间的区别?

例如,在查看GlowCode分析器网站时,它说:

“GlowCode 6.2和x64configuration文件本机,托pipe和混合C ++,C#,.NET代码”

他们的意思是什么?

原生代码是内存不“被pipe理”的代码,因为内存不会被释放(例如C ++的“删除”和C的空闲),没有引用计数,也没有垃圾收集。 你猜对了,托pipe代码的内存是免费的,分配给你的代码,垃圾收集和其他好东西。

混合代码是当您托pipe调用到非托pipe图层的代码时。 通常情况下,当你有一个纯粹的非托pipeC ++ DLL,并使用P / invoke从.NET调用它。

本地代码被编译为直接与操作系统。 然而,被pipe理的代码是预编译的(Java中的字节码),然后由运行时的即时编译器处理为本机代码。 托pipe代码具有在不同操作系统上运行的潜力,因为在虚拟机实际使用之前不会创build机器代码。 这样,您就可以在Windows上运行.NET应用程序,并在安装了Mono运行时的Linux或Mac上运行它们。 可移植性不像Java那样干净(因为微软自然封闭的体系结构),但这个概念依然存在。

如果您运行的是非托pipe应用程序,则代码已编译为针对指定的操作系统/硬件运行。 任何到其他OS /指令集的可移植性都将丢失,必须重新编译才能执行。

本机代码是用运行在其上的计算机的“本机”机器语言编写的,并由处理器直接执行。

托pipe代码是用特殊语言编写的,需要另一个程序运行(即pipe理)它。 这个其他程序通常被称为解释器,因为它解释特殊语言。

C和C ++程序是本地的。

Java和C#(以及所有的.NET语言)都被pipe理。

托pipeC ++是在.NET解释器中运行的一种特殊的C ++forms。

混合程序是一个使用本机和pipe理代码的程序。

在公共语言运行库(CLR)的控制下运行的代码被称为托pipe代码。 不在CLR下运行的代码被称为本机代码。