c#中 用 new 分配内存后,怎么把他释放掉?求解答
1个回答
展开全部
托管堆的内存由GC自动回收,在编写代码的时候也无需显式调用GC。非托管资源的内存释放可以声明一个析构器。
using System;
public sealed class OSHandle{
// 保存一个非托管资源的win32句柄
private IntPtr handle;
// 构造器初始化句柄
public OSHandle(IntPtr handle){this.handle = handle;}
//当垃圾收集执行的时候,下面的析构器(Finalize)方法
//将被调用,它将关闭非托管资源句柄。
~OSHandle(){CloseHandle(handle);}
// 返回所有封装的handle句柄
public IntPtr ToHandle(){return handle;}
// 隐式转换操作符也用于返回所封装的Handle句柄
public static implicit operator IntPtr(OSHandle osHandle){return osHandle.ToHandle();}// 释放非托管资源
using System;
public sealed class OSHandle{
// 保存一个非托管资源的win32句柄
private IntPtr handle;
// 构造器初始化句柄
public OSHandle(IntPtr handle){this.handle = handle;}
//当垃圾收集执行的时候,下面的析构器(Finalize)方法
//将被调用,它将关闭非托管资源句柄。
~OSHandle(){CloseHandle(handle);}
// 返回所有封装的handle句柄
public IntPtr ToHandle(){return handle;}
// 隐式转换操作符也用于返回所封装的Handle句柄
public static implicit operator IntPtr(OSHandle osHandle){return osHandle.ToHandle();}// 释放非托管资源
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询