复制构造函数与智能指针

本文介绍了一种防止内存泄漏的有效方法——智能指针。通过将指针视为类的实例,并利用构造函数和析构函数自动调用机制,实现内存的自动管理。尽管这种方法会略微降低效率,但能有效避免内存泄漏。

在许多引擎中,资源的管理是一个很重要的模块。为防止出现内存泄漏的情况,经常采用一些特殊的技术手段,智能指针就是其中一种有效方法。其基本原理是:

 

将指针看作类的实例,每种指针对应一个类,每个具体的指针对应这个类的一个实例。在类中设两个成员变量,一个作为计数器,另一个则用来保存此类所对应的new出来的内存的指针的具体值。

 

利用类的构造函数和析构函数,会在构造和析构时被自动调用的机制。在构造函数中对计数器作加一操作,在析构函数中对计数器作减一操作。当计数器值变为零时,将此指针所指向的内存delete掉。

 

由于是将指针看作是一个类,所以在所有需要传递指针的地方,都要用其所对应的类的实例来代替。这样就必须要考虑写好复制构造函数的问题。以保证函数调用时的参数传递及返回的正确进行。

 

另外,也正是由于将指针当作一个类,明显的敝端是,在执行时由于要不断地调用构造和析构函数,使得效率不可避免地降低了。

 

利用构造和析构函数的自动调用机制,可有效地防止内存泄漏,但同时也降低了指针的使用效率。可谓是有一利,则有一敝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值