C#中内存使用问题

刚接触C#,这样会不会有内存泄漏问题:Point[]a=newPoint[10];...(这里不知道怎样释放内存)a=newPoint[20];如果有,改怎么改进呢?... 刚接触C#,这样会不会有内存泄漏问题:
Point[] a = new Point[10];
...
(这里不知道怎样释放内存)
a = new Point[20];
如果有,改怎么改进呢?
展开
 我来答
lrh3321
2015-05-04 · TA获得超过2183个赞
知道大有可为答主
回答量:2296
采纳率:75%
帮助的人:2114万
展开全部
不用管,GC会自己去处理的。
非托管的代码创建的数据才需要主动去销毁,.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接口的对象。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式