`
yangyou230
  • 浏览: 1726490 次
文章分类
社区版块
存档分类

托管(C++)

 
阅读更多

所谓托管是指内存管理由系统而不是由程序员管理。像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++环境中创建一个类或者结构体来模拟.NET中的委托功能,这通常涉及模板和...

    C#、托管C++、非托管C++编程

    在IT行业中,C#、托管C++和非托管C++是三种不同的编程语言或编程模式,它们各自有其特点和用途。在这个特定的场景中,我们讨论的是如何将非托管C++编写的加密算法,通过托管C++进行封装,最终在C#应用程序中使用。 ...

    非托管C++调用C#的dll

    通常,C#调用C++编写的dll可以直接使用dllimport,但是C++调用C#编写的dll需要使用托管C++将C#的dll进行一次封装,然后由非托管C++调用封装好的dll。然而,CLR VIA C#提供了一种非托管C++直接调用的方法,该方法可以...

    使用托管C++粘合C#和C++代码

    托管C++是微软.NET框架提供的一种特性,它允许开发者在.NET环境中使用C++语言,同时能够无缝地与C#和其他.NET语言交互。这种技术的核心在于,托管C++编译后的代码能够理解并遵循.NET框架的规则,比如垃圾回收、类型...

    使用托管C++粘合C#和C++代码.pdf

    "使用托管C++粘合C#和C++代码" 本文档主要介绍使用托管C++将C#和C++代码进行集成的方法。在这个例子中,我们将使用托管C++创建一个动态链接库(DLL),并将纯C++静态库中的类封装在托管类中,从而实现C#和C++代码的...

    C#调用DLL中非托管C++函数参数类型对照

    C#调用DLL中非托管C++函数参数类型对照 在C#编程中,经常需要调用C++中的DLL类库,这就需要了解C++中的函数参数类型在C#中的对应关系。以下是基本数据类型的对照: * 一维数组:C#参数在基本类型前加ref或out,out...

    关于托管C++和非托管C++各种字符串类型的转换

    ### 关于托管C++和非托管C++各种字符串类型的转换 #### 概述 本文将详细介绍托管C++(Managed C++)与非托管C++(Unmanaged C++)之间各种字符串类型转换的方法与技巧。虽然从表面上看这些转换操作似乎很简单,但...

    托管C++ 文档+示例

    ### 托管C++知识点详解 #### 一、托管C++简介 托管C++(C++/CLI)是Microsoft为了使传统的C++程序能够更好地利用.NET Framework提供的功能而设计的一种编程语言扩展。它通过在标准C++的基础上添加一系列新的语言...

    c#调用托管c++调用c++

    本文将深入探讨如何使用C#调用托管C++,并通过托管C++来调用原生的C++ DLL。这是一个复杂但非常实用的技术,对于开发混合式应用程序来说至关重要。 标题“c#调用托管c++调用c++”揭示了主要的技术路线:首先,C#...

    从托管C++到C++/CLI的参考资料

    ### 托管C++到C++/CLI迁移指南 #### 概述 本文档旨在指导开发者从托管C++顺利过渡到C++/CLI。随着Visual C++ 2005 (VC2005)的发布,原先使用的托管C++语法被C++/CLI所取代。Stanley B. Lippman撰写的这篇文档详细...

    C#C++混合编程示例(C#调用非托管C++类)

    1. **托管C++(Managed C++)**:VS2010支持托管C++,它允许C++代码直接集成到.NET环境中,通过CLI(Common Language Infrastructure)支持.NET特性。在这种情况下,C++类可以被C#直接引用,就像引用任何.NET组件...

    文本阅读(托管c++)

    标题中的“文本阅读(托管C++)”指的是一个使用托管C++实现的简单文本阅读器项目。托管C++是微软.NET框架中的一种编程语言,它允许开发者使用C++语法同时利用.NET Framework的特性,如垃圾回收、类型安全和面向对象...

    托管C++调用.NET中的Excel生成Chart

    标题 "托管C++调用.NET中的Excel生成Chart" 描述了一个使用托管C++代码与.NET框架集成,以在Excel中创建图表的过程。这个过程通常涉及使用Microsoft Office Interop库,这是一个允许不同编程语言与Microsoft Office...

    非托管C++调用C#Dll

    本示例主要关注如何使用非托管C++调用C#编写的动态链接库(Dll)。这个过程通常称为P/Invoke(Platform Invoke),是.NET框架提供的一种机制,使得非托管代码(如C++)能够与托管代码(如C#)进行交互。 首先,我们...

    C#动态调用 托管 C++库

    因为业务需要学习C#调用C++的库 但是C# 是在托管机制的运行 ​ C++ 在非托管机制下...大致实现思路:首先创建C++项目 实现非托管动态库 ,其次在创建C++项目加载非托管运行库,发布成托管运行库,然后C#引用dll库。

    导入Excel数据到MS Sql数据库托管C++代码

    托管C++是一种允许C++开发者利用.NET框架特性的编程语言,它结合了C++的强大性能与.NET的便利性。下面,我们将深入探讨如何使用托管C++编写一个程序来实现Excel数据导入到MS SQL数据库的过程。 首先,为了与Excel...

    在VS2010上使用C#调用非托管C++生成的DLL文件

    本文主要探讨的是如何在Visual Studio 2010(VS2010)环境下,使用C#调用由非托管C++编写的DLL动态链接库文件。下面我们将详细阐述这一过程。 首先,我们需要创建一个C#项目,用于调用非托管C++生成的DLL。在VS2010...

    标准C++封装托管C++工程

    1. 使用标准C++封装托管C++代码生成DLL供标准C++使用。 2. 有完整使用示例

    托管C++概述

    托管C++是微软在.NET框架下为C++程序员提供的一种能够编写.NET应用程序的扩展,它允许C++开发者利用.NET框架的特性,如垃圾回收、类型安全性和元数据。托管C++的概念是基于.NET框架的“托管”理念,即代码由.NET框架...

Global site tag (gtag.js) - Google Analytics