您的位置:首页 > 编程语言 > C语言/C++

托管c++中的资源管理--- "~"和"!"符号的作用

2018-02-11 14:19 337 查看
写过c++程序的朋友应该都知道析构函数的定义方法,举例如下:class CSomeClass
{
public:
CSomeClass();
~CSomeClass();
private:
LPCTSTR m_szBuffer;
};带有~符号的,就是析构函数,一般来说,我们会在析构函数里做资源的释放和清理工作,在托管c++里,也是如此,不过如果仅仅在析构函数里做资源的释放,那么就必须要按照如下方式来调用: using (CSomeClass someClass = new CSomeClass())
{

}否则一旦忘记这样做了,就有可能造成内存泄漏,但是在.net下的开发,内存都是托管的,由垃圾回收器自动管理,那么如何才能解决上面碰到的可能忘记调用Dispose接口函数的问题呢?
这个时候微软提供了一个符号,对就是叹号! public ref class CSomeClass
{
public:
CSomeClass();
virtual ~CSomeClass();
!CSomeClass();

private:
LPCTSTR m_SomeStr;
};这个时候,只需要向如下所示的一样直接new就可以了,CSomeClass someClass = new CSomeClass();
用完就不管了,垃圾回收器会自动调用!CSomeClass()方法,然后你就可以得到一个机会去清理和释放资源了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐