所谓托管是指内存管理由系统而不是由程序员管理。像C#语言的内存管理(内存的分配和释放)都是由系统管理的。所以只有new而没有delete。托管C++是微软所创造一种扩展C++的一种叫法。英文写出来是Managed C++,就更能看出宣传有系统管理内存这个意思。
C++有个很重要的特点就是内存由程序员管理。所以分配内存以后,要程序员自己释放。如果没有释放就会有内存泄露,如果在不该释放时释放了,就会出现所谓的野指针。
在C++把内存管理交给系统的,由系统来负责释放,就被称为托管。
多数对所谓的Managed C++不满意。所以后来微软推出了C++/CLI,相对Managed C++对标准的C++做了很多更激进的改造。当然C++/CLI依然有系统(准确的说是.net框架)管理内存功能,所以也有人把C++/CLI依然称为托管C++。
可以简单的把托管C++看成在语言层次上支持.net框架。但严格的说没有非托管C++,因为托管只是一种对C++的扩展。使用标准C++理论上说也可以支持.net框架。就像支持其他系统一样。不使用.net框架,也C++可以利用别的办法由系统来管理内存。
C++/CLI可以说是C++的一个变种。语法的角度看是C++的一个超集。如果程序没有移植要求,而且又需要使用.net框架,到的确是个不错的选择。
托管代码直接编译成目标计算机的机械码,这些代码只能运行在编译出它们的计算机上,或者是其它相同处理器或者几乎一样处理器的计算机上。非托管代码不能享受一些运行库所提供的服务,例如安全和内存管理等。如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常来说,它们会调用Windows SDK所提供的API来实现。就最近的情况来看,非托管程序会通过COM接口来获取操作系统服务。
分享到:
相关推荐
利用非托管C++编写加密性强的算法,然后利用托管C++包装,最后集成入C#中使用
C#调用C++编写的dll,一般都是直接用dllimport,这个资料很多。C++调用C#编写的dll,一般方法都是先用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。
简单易懂的代码,适用于新手,演示了c#如何通过托管c++全程调用c++
目前支持最多8个参数,利用模版和多重继承机制实现的。
使用托管C++粘合C#和C++代码.pdf
本人花费大量时间研究之作,虽然看起来挺简单的,但真的用了好长时间啊
在C#编程中,常会用到C++中的dll类库,简单介绍一下它们的对应关系。
因为业务需要学习C#调用C++的库 但是C# 是在托管机制的运行 C++ 在非托管机制下...大致实现思路:首先创建C++项目 实现非托管动态库 ,其次在创建C++项目加载非托管运行库,发布成托管运行库,然后C#引用dll库。
Stanley B. Lippman关于如何从托管C++迁移到C++/CLI的说明。如果你在看VC技术内幕第6版,看到后面的托管C++部分,而现在的VC2005是使用新的C++/CLI语法的,那么,这份文档很合适。
1. 使用标准C++封装托管C++代码生成DLL供标准C++使用。 2. 有完整使用示例
演示如何在C#中调用非托管C++的类,是C#C++的混合编程技术的简单示例,VS2010开发
从C++到托管C++(C++/CLI)托管C++架起了一座标准C++通向.Net Framework的桥梁。
这是本人刚用托管C++写的一个Excel导入程序,绝对能用!
标准C++生成的动态链接库dll,在C#只能调用其方法,不能导出类。...此源码为首先用托管C++为媒介,将标准C++链接库封装成.net的dll,再由C#直接调用的例子。 源码保证能运行,希望对大家粘合C#和C++代码有帮助。
附件是c#调用c++托管代码,最后调用c++ DLL代码。
1. 托管C++调用.NET中的Excel生成Chart 2. VS2010编译。
在VS2010上使用C#调用非托管C++生成的DLL文件
本书中所有的示例都使用VS进行开发,VS是一种强大的集成开发环境,支持C#(以及托管和非托管C++、Visual Basic和其他一些语言)。这个环境的优点是便于把.NET功能集成到代码中。我们创建的代码完全是C#代码,但使用...
托管C++ 生成 CLR DLL动态链接库 VisaulStdio 2019 实例Demo 使用说明:https://www.cnblogs.com/suntroop/articles/17320843.html