垃圾回收,析构函数

初始化对象中的书据,运算符new可在调用了对象的构造函数之后,为对象分配内存,构造函数以后还可能获得其他系统资源,比如网络连接,数据库或者文件.

一旦程序不再使用对象,对象就必须采取一种严格的方式来返回内存和释放资源.如无法释放这些资源,会导致资源泄漏,有可能耗尽可用的资源,防碍程序的继续执行.

在c,c++中,程序员必须显示的管理内存,与此相反,c#中在内部执行内存管理,.NET框架会对内存执行垃圾回收,归还不再需要的系统内存.垃圾回收器执行时,会标识出应用程序不再引用的对象.此类对象即可以当时回收,也可以在垃圾回收器的后期执行过程中回收,因此,在c,c++中普遍的内存泄漏问题(内存不由运行库回收)在c#中变得相当罕见.

至于其他资源的分配与解除分配,比如网络连接,数据库连接和文件等,仍然必须由程序员显示的空值,为处理这些资源,一种技术(与垃圾回收器配合使用)是定义析构函数,以便将资源返回给系统,垃圾回收器调用一个对象的析构函数,先对那个对象执行终止操作,然后在由垃圾回收器回收对象的内存.这整个过程称为终止.

每个类只能包含一个析构函数.析构函数的命名方式是在类名称前添加~字符,例如TimeT类的析构函数便是~TimeT().析构函数不接受参数,所以析构函数不能重载,但垃圾回收器从内存中删除一个对象时,垃圾回收器首先调用那个对象的析构函数,以清除类使用的资源.然而我们不能准确的判断何时会调用析构函数,因为无法准确的判断何时发生垃圾回收,终止程序时,以前没有发生垃圾回收的任何对象都会收到析构函数调用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值