首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

托管代码与托管代码

什么是非托管代码(unmanaged code)?       托管代码就是在Visual Studio .NET 2002发布之前所创建的代码。...就最近的情况来看,托管程序会通过COM接口来获取操作系统服务。       跟Visual Studio平台的其他编程语言不一样,Visual C++可以创建托管程序。...区别:      1、托管代码是一种中间语言,运行在CLR上;           托管代码被编译为机器码,运行在机器上。     ...2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;           托管代码依赖于平台和语言。     ...托管代码与托管代码的性能比较       基本上每个人都知道的是,所有.Net语言都将被编译成为一个叫做IL汇编的中间语言。

4.6K30

C# 托管资源与托管资源

托管资源: 对于托管资源,GC只能跟踪托管资源的生存期,而不知道如何去释放它。这样就会出现当资源用尽时就不能提供资源能够提供的服务,windows的运行速度就会变慢。...托管资源指的是.NET不知道如何回收的资源,最常见的一类托管资源是包装操作系统资源的对象,例如文件,窗口,网络连接,数据库连接,画刷,图标等。...默认情况下,方法是空的,对于托管对象,需要在此方法中编写回收托管资源的代码,以便垃圾回收器正确回收资源。...本来如果按照上面做法,托管资源也能够由垃圾回收器进行回收,但是非托管资源一般是有限的,比较宝贵的,而垃圾回收器是由CRL自动调用的,这样就无法保证及时的释放掉托管资源,因此定义了一个Dispose(...)方法,让使用者能够手动的释放托管资源。

3.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C#托管代码和托管代码

    含义 托管/托管是微软的.net framework中特有的概念。 托管代码:也叫本地(native)代码。 托管代码:是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。...程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服 务,例如内存管理、安全管理、线程管理等等。和托管资源/托管资源不同,不要弄混。...托管代码的优点 1.跨平台。...有关内存管理(内存申请,内存释放,垃圾回收之类的)全部都是.net的CLR来管理 2.更加安全,不会出现诸如内存泄露之类的问题 托管代码的缺点 1.对程序的性能也产生一定的影响。...CLR首次加载程序集代码时,JIT将IL编译成本地代码时,会对其进行代码优化,这类似与托管C++编译器的后端所做的事情.这可能也会花费加多的时间生成优化代码。 2.不能直接读取内存,不够灵活

    3.5K30

    静态成员函数访问静态数据成员【C++】

    ,为了能处理静态数据成员; 静态成员函数不能默认引用本类静态数据成员的原因: 当调用一个对象的静态成员函数时,系统会将该对象的起始地址赋予成员函数的this指针。...然而,静态成员函数不属于对象,无this指针。所以静态成员函数不能访问类的默认静态成员静态成员函数和静态数据成员)。...//静态成员函数的类外定义 参数表中创建对象 cout << "x=" << m.x << endl; //静态<em>成员</em>函数通过对象访问<em>非</em>静态数据<em>成员</em> cout << "y=" <...只要对静态数据<em>成员</em>的值更新一次,就可以保证所有对象都会存取更新后的值 由本例可知:静态<em>成员</em>函数不能引用本类<em>非</em>静态<em>成员</em>并非绝对,只是不可以进行默认的访问,因为编译器不知道应该去寻找哪一个对象。...<em>非</em>静态<em>成员</em> ; 类名 :: <em>非</em>静态<em>成员</em> ; 故:实例化对象即可完成对<em>非</em>静态数据<em>成员</em>的访问

    1.3K20

    C++中const和const对象分别调用const和const成员函数

    一、先来提出问题 const对象可以调用const成员函数吗? const对象可以调用const成员函数吗? const成员函数内可以调用其它的const成员函数吗?...const成员函数内可以调用其他的const成员函数吗?...二、实践出真知 1、const对象可以调用const成员函数 2、const对象不能调用const成员函数 3、const对象可以调用const成员函数 4、const对象可以调用const成员函数...5、const成员函数不能调用const成员函数 6、const成员函数可以调用const成员函数 我们知道c++在类的成员函数中还会隐式传入一个指向当前对象的this指针,所以在test类中,...下面解释为什么const 对象可以调用const成员函数, 1 class test{ 2 public: 3 void print()const; 4 }; 前面我们把const成员函数print

    1.3K20

    六、CLR下的托管代码应用程序与托管代码程序之间的性能对比

    1、托管程序二次编译的问题,以及微软做的优化 五、CLR加载程序集代码时,JIT编译器对性能的产生的影响中介绍了CLR下托管应用程序的二次编译对性能产生的影响.事实上,在IL编译成本机代码的时候的时候...但是,在微软做了大量的性能优化工作之后,将这些额外的开销保持在最低的限度之内. 2、托管程序的实际性能 事实上,托管程序的性能实际上要比托管应用程序要好,举个例子,当JIT编译器在运行时将IL代码编译器编译成本机代码的时候...,编译器对执行环境的认识比托管编译器更深刻。...如果JIT编译器没有使托管应用程序达到应有的效果,如果需要进一步确认,有两种方法: (1)、.Net Framework SDK提供的NGen.exe工具 该工具将程序集的所有的IL代码编译成本机代码,

    90340

    C++编程规范(二)优先编写非成员友元函数

    成员友元函数通过尽量减少依赖提高封装性,实现加法操作符重载比较: 一:成员函数 #include using namespace std; template <typename...当运算符函数需要访问类的私有数据成员,但该类不提供它的接口,将它声明为友元非成员函数 template const Add operator+(const Add<T...+r.b); } int main() { Add c1(1,2); Add c2(3,4); Add c3 = c1 + c2; } 三,非成员友元函数...getB() const {return b;} private: T a,b; }; //非成员函数:能够同样接受左参数和右参数的隐式转换 //友元非成员运算符函数 当类的运算符函数仅使用类的私有数据成员接口...,定义该运算符函数为友元非成员函数 template const Add operator+(const Add &l, const Add &r) {

    32320

    .NET简谈互操作(四:基础知识之Dispose托管内存)

    2.托管内存与托管内存是否存在差异?...,由于这样一扯可能今天这篇文章是讲不完了,这里就粗略的过一下吧;我们下面进入今天的主题;其实有些概念真的不太好讲,你要说托管托管内存不一样,有人会问不一样在什么地方;真的没有说服性的理由; 关于托管内存释放的问题...似乎今天的主题就是关于托管托管内存的问题,刚好能详细的说明上面的问题;要想在托管内存中释放托管内存,没有那么简单;不同的代码库,调用的分配内存的方法不一样,算法也就不一样;C的分配与回收是malloc...托管的内存释放只有托管知道,所以在托管中定义一个释放托管资源的方法,然后在用.NET平台去调用这个托管方法来进行释放内存;下面我们来看一个小例子,以说明问题为主; 图1: 这是非托管的代码,...由于时间关系我就没有写具体的操作了;说明原理就行了; 图2: 这是在托管.NET平台上面定义的托管代码调用关系; 图3: 这样一来,不管托管的内存是采用什么方法分配的内存我们都能在托管中将其释放

    49220

    【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

    调用 静态成员函数 s.fun(); 4、静态成员函数只能访问静态成员 静态成员函数内容要求 : 静态成员函数 只能访问 静态成员变量 其他静态成员函数 静态成员函数 不能访问 静态成员变量 或 静态成员函数...静态成员 ; 如果在静态成员函数中 , 访问静态成员 , 会报如下错误 : 1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------ 1>Hello.cpp...进行的 ; 在 Student 类中定义静态成员函数 , 使用 static 关键字修饰函数 ; 注意 : 不要在 静态函数中 访问 静态成员 , 否则会报错 " 对静态成员“Student::m_age...”的非法引用 " ; static void fun() { // 静态成员函数 中 访问静态成员会报错 // error C2597: 对静态成员“Student::m_age”的非法引用...中 访问静态成员会报错 // error C2597: 对静态成员“Student::m_age”的非法引用 //m_age = 10; cout << "静态成员函数被调用 : number

    1K20
    领券