C#中内存使用问题
刚接触C#,这样会不会有内存泄漏问题:Point[]a=newPoint[10];...(这里不知道怎样释放内存)a=newPoint[20];如果有,改怎么改进呢?...
刚接触C#,这样会不会有内存泄漏问题:
Point[] a = new Point[10];
...
(这里不知道怎样释放内存)
a = new Point[20];
如果有,改怎么改进呢? 展开
Point[] a = new Point[10];
...
(这里不知道怎样释放内存)
a = new Point[20];
如果有,改怎么改进呢? 展开
展开全部
不用管,GC会自己去处理的。
非托管的代码创建的数据才需要主动去销毁,.NET中继承了IDispose的对象,记得在不用时调用Dispose方法释放资源。
非托管的代码创建的数据才需要主动去销毁,.NET中继承了IDispose的对象,记得在不用时调用Dispose方法释放资源。
追问
什么交非托管的代码创建的数据啊?
如果Point改成我自己定义的结构体呢?也不需要管吗?
追答
不用管,你自己定义的结构本质上还是.NET的对象组合出来的。
var s1=System.Runtime.InteropServices.Marshal.AllocCoTaskMem(5);//从 COM 任务内存分配器分配指定大小的内存块。
System.Runtime.InteropServices.Marshal.FreeCoTaskMem(s1)//释放由非托管 COM 任务内存分配器使用 Marshal.AllocCoTaskMem 分配的内存块。
总之,只要你不去使用System.Runtime.InteropServices里的类,不去与C/C++写的程序互操作,你只要注意继承了IDispose接口的对象。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询