托管代码和非托管代码(托管代码)

导读 托管代码(Managed Code)是指在运行时由特定的运行时环境(如.NET Framework的公共语言运行库,即CLR)进行管理和执行的代码。托管代码...

托管代码(Managed Code)是指在运行时由特定的运行时环境(如.NET Framework的公共语言运行库,即CLR)进行管理和执行的代码。

托管代码可以获得运行时环境提供的服务,例如自动垃圾回收、内存管理、类型安全检查、安全支持等,这些服务有助于提供独立于平台和语言的、统一的托管代码应用程序行为。托管代码通常使用高级编程语言编写,如C#、Visual Basic .NET、F#等,这些语言共享统一的类库集合,并能被编译成中间语言(IL),在运行时由CLR编译成本地可执行的代码。

托管代码的执行分为两个阶段:源代码首先被编译成托管代码(中间语言),然后托管代码被进一步编译成目标平台的专用文件,如类库或可执行文件。托管代码在执行时受到CLR的严格控制,这可以提供更高的安全性和可靠性,同时也减少了内存泄漏的可能性。

相对的,非托管代码(Unmanaged Code)是不受CLR控制和管理的代码,通常由C或C++等语言编写,直接操作系统资源和内存,需要手动管理内存分配和释放。非托管代码的执行速度通常较快,但也更容易导致内存泄漏、悬挂指针和安全漏洞等问题。