托管代码与非托管代码

什么是托管代码?他与非托管代码有何区别? 托管代码提供了许多高级特性和便利,如自动内存管理、类型安全等,使得开发更加高效且不易出错。但它依赖于CLR,可能会带来一些性能开销。非托管代码提供了更高的灵活性和性能,因为它可以直接与操作系统交互。然而,这也要求开发者对内存管理和其他底层细节有更多的了解和控制。选择使用哪种代码取决于具体的应用场景和需求。对于大多数现代应用程序开发,尤其是Web应用和服务端应用,.NET平台下的托管代码是一个非常不错的选择。而对于需要高性能、低级别控制或者特定硬件访问的场合,非托管代码可能是更好的选择。 阅读详情

托管代码

托管代码(Managed Code)实际上就是中间语言(IL)代码。

代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。

程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。

托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行库可以加载和验证程序集,并以此来保证中间语言的正确性。

当某些方法被调用时,公共语言运行库把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用时使用。这个过程就是即时编译。 

注意:程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服务,例如内存管理、安全管理、线程管理等等。

如图:

非托管代码

 

非托管代码(Unmanaged Code)是指直接编译成目标计算机的机器码,这些代码只能运行在编译出这些代码的计算机上,或者是其他相同处理器或者几乎一样处理器的计算机上。

 

非托管代码不能享受公共语言运行库所提供的一些服务,例如内存管理、安全管理等。 

 

如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常非托管代码调用Windows SDK所提供的API来实现内存管理。

 

非托管程序也可以通过调用COM接口来获取操作系统服务。

 

注意:C#跟Visual Studio平台的其他编程语言不一样的是,C#可以创建托管程序与非托管程序。当创建的项目选择名字以MFC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序。

 

总结:

 

非托管代码(Unmanaged Code)不由CLR公共语言运行库执行,而是由操作系统直接执行的代码。

非托管代码必须自己提供垃圾回收,类型检查,安全支持等等服务

代码托管有哪些平台 GitHub的强大搜索功能和广泛的集成使其成为开发者社区中的首选,特别适合开源项目和公共代码库。GitLab 是一个开源的代码托管平台,提供类似于GitHub的功能,但还包括持续集成、部署管道等功能。GitHub 是最流行的代码托管平台之一,拥有庞大的开发者社区和丰富的开源项目资源。SourceForge支持多种版本控制系统,如Git、SVN和Mercurial,提供了丰富的项目管理和协作工具。Allura支持多种版本控制系统,如Git、SVN和Mercurial,提供了丰富的项目管理和协作工具。 阅读详情

相关推荐

托管代码VS非托管代码

托管代码 (managed code) :      由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。  非托管代码  (Unmanaged Code) -  :       在公共语言运行库环境的外部,由操作系统直接执行

qiuye14的专栏 785

C#中什么是非托管代码?托管代码和非托管代码有什么区别

COM(Component Object Model)组件:COM 是一种面向对象的二进制接口标准,可以编写使用 C/C++ 编写的 COM 组件,并通过 Interop Services 在 C# 中调用。这种方式常用于与操作系统交互、进行系统级编程等。这些是C# 中使用非托管代码的一些常见场景,包括调用 C/C++ 动态链接库函数、使用 COM 组件、以及调用 Win32 API 函数。在C#中,托管代码和非托管代码是两种不同类型的代码,它们在内存管理和执行环境上有所不同。)技术在 C# 中调用。

一个专注于技术研究创新的程序员 2765

武汉理工大学 python实验三

请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾),如无解则输出`“Data Error!题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有。编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。,如果有多个解,则分行输出,每行一个解;

2401_83472225的博客 5949

C#面:什么是托管代码,非托管代码

C#中的托管代码是指由.NET运行时环境(CLR)管理和执行的代码。当我们使用C#编写的代码被编译后,它会被转换成中间语言(IL)代码,也称为托管代码。托管代码在运行时由CLR加载和执行,CLR负责内存管理、垃圾回收、安全性等任务。

那个那个鱼的博客 799

卡诺图化简法注意事项+竞争冒险知识点总结

今天反思以下卡诺图化简法中的注意事项。 卡诺图看起来简单,但如果不熟悉的话很容易出错,因此要对画圈的规则比较熟悉。

weixin_42415266的博客 1万+

Windows 10 下 DockerToolbox 安装全攻略:从下载到配置阿里云镜像加速

本文详细介绍了在Windows 10系统上安装和配置DockerToolbox的完整流程。从下载安装包、执行初步安装,到关键步骤——修改虚拟机存储路径以及配置阿里云镜像加速器,旨在帮助开发者,尤其是初次接触Docker的新手,快速搭建高效的本地容器开发环境,并解决国内镜像下载缓慢的痛点。

moon9的博客 476

托管代码和非托管代码

一、什么是“托管代码”? 1.1、托管代码 托管代码是使用可在 .NET 上运行的一种高级语言(例如 C#、Visual Basic、F# 等)编写的。 使用相应的编译器编译以这些语言编写的代码时,无法获得机器代码, 而是获得中间语言代码,然后运行时会对其进行编译并将其执行。 C++ 是这条规则的一个例外,因为它也能够生成可在 Windows 上运行的本机非托管二进制代码。 简而言之,托管代码就是执行过程交由运行时管理的代码;在这种情况下,相关的运行时称为公共语言运行时 (CLR)...

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1553

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 552

托管代码和非托管代码的区别

理解托管代码和非托管代码的区别关键是要了解CLR(公共语言运行时)。.Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能。 .NET的大部分特性——垃圾收集,版本控制,线程管理等,都使用了CLR提供的服务……   当你为.NET Framework编译源代码的时候,得到的目标代码不是CPU能识别的机器指令,而是一种叫做"

Search,Research 2603

100天精通Python(爬虫篇)——第119天:基于selenium实现隐藏浏览器指纹特征(反反爬策略)

1. 什么是浏览器指纹? 2. 爬虫隐藏浏览器指纹特征的好处? 3. 手动打开浏览器指纹情况 4. 无界面模式打开浏览器 5. 脚本隐藏浏览器指纹特征

努力让自己发光,对的人才能迎着光而来 8万+

第三天:Python基础语法详解

Python代码规范与注释最佳实践 摘要: 本文深度解析Python缩进规则与代码结构的技术规范,包括缩进的底层原理、语法规则和错误处理。详细阐述Python注释系统,涵盖行内注释、文档字符串和类型注释等多种形式,并提供工业级代码组织方案。研究显示,良好的缩进可提升40%的代码识别速度,降低50%的认知负荷。文章还对比了Sphinx、pdoc等主流文档生成工具,给出企业级项目中的注释编写原则和模板建议,帮助开发者构建更可维护的Python代码。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1011

 托管代码和非托管代码的区别

托管代码和非托管代码的区别 这一篇关于“托管代码和非托管代码的区别”文章,是我看过的讲得比较清楚的文章,推荐有趣的同行读一读 什么是托管代码? 托管代码是一microsoft的中间语言,他主要的作用是在.NET FRAMEWORK的CLR执行代码前去编译源代码,也就是说托管代码充当着翻译的作用,源代码在运行时分为两个阶段: 1.源代码编译为托管代码,(所以源代码可以有很多种,如VB,C#,J#) 2.托管代码编译为microsoft的平台专用语言。 ...

水箭龟在睡觉 550

使用 Python 爬虫获取中国证券市场公司公告数据

本文详细介绍了如何使用 Python 爬虫技术从中国证券市场(如巨潮资讯网)爬取公司公告数据。通过分析网页结构,编写爬虫脚本,抓取并存储公告信息,我们实现了从网页抓取数据的全过程。此外,本文还展示了如何应对反爬虫机制,并介绍了数据分析与可视化的基本方法。未来,我们可以通过机器学习等技术进一步挖掘公告中的潜在信息,例如,通过情感分析对公告内容进行情绪分类,或者预测某些公告类型对股市走势的影响等。希望本文能帮助你理解如何使用 Python 爬虫技术获取和处理证券市场的数据,并为你的数据分析项目提供帮助。

2201_76125261的博客 1887

区别:托管代码与非托管代码

托管代码 托管代码(Managed Code)实际上就是中间语言(IL)代码。 代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。 程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。 托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行...

HideInTime的博客 1314

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

分享一份小度在家1C系列NV2101刷机保姆级教程,轻松解锁第三方应用!(内含详细教程、刷机工具和救砖等工具)

XiaoqiangClub的博客 7147

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

托管代码与非托管代码之间的交互

否则,调用者就看不见被调用者修改的内容。2.1、System命名空间下的Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Single、Double类型为blittable基元类型。8.4、当String以LPStr、AnsiBStr、BStr、TBStr、LPUTF8Str非托管类型按照引用传递时,互操作封送器在非托管代码调用返回时会将辅助缓冲区中的内容复制回托管代码中的一个新String中。

zjz 1511

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# 托管代码 非托管代码

C#托管

smartDMer的专栏 721

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 静态链接库、动态链接库和动态加载库
下一篇: linux多网口配置多IP
HideInTime
博客等级 码龄9年 86粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值