C#新建的二维数组如何释放?? 80
如题,在C#里面如何释放二维数组?我知道在C++里面可以用delete,但不知道在C#该怎样操作,请高手指点是这样的,我申请一数组空间pixel,byte[,]pixel...
如题,在C#里面如何释放二维数组?我知道在C++里面可以用delete,但不知道在C#该怎样操作,请高手指点
是这样的,我申请一数组空间pixel, byte[,] pixel=new byte[10000, 10000];,该数组用来储存一张图片的像素灰度值,当我打开更大的另外一幅图片,同时也想保存在pixel数组里面时,原来的数组已经不够用,要把原来数组占的空间完全释放掉,再申请一个更大的数组空间。
但我该如何去释放原来的空间呢? 展开
是这样的,我申请一数组空间pixel, byte[,] pixel=new byte[10000, 10000];,该数组用来储存一张图片的像素灰度值,当我打开更大的另外一幅图片,同时也想保存在pixel数组里面时,原来的数组已经不够用,要把原来数组占的空间完全释放掉,再申请一个更大的数组空间。
但我该如何去释放原来的空间呢? 展开
5个回答
展开全部
.NET回收资源是按"代"(Generic),自动回收释放,也许有时候即使你认为地去Obj.Dispose(),以及obj = null对象也未必一定立刻释放所占内存.Framework会根据当前的可用资源,以及调度原则去实现资源的分配.如果资源不够,会自动回收某些没有改变的资源,而不一定是立刻回收.但是总体来说,不会在硬件资源充足的情况下,而出现资源调度造成程序崩溃的现象.
对于LZ的担忧,我建议重新给数组赋值即可.比如把byte[,] pixel=new byte[10000, 10000];改变成另外一个更多元素的数组.byte[,] pixel=new byte[20000, 20000];即可,一般情况下, 原来的资源会释放.
对于LZ的担忧,我建议重新给数组赋值即可.比如把byte[,] pixel=new byte[10000, 10000];改变成另外一个更多元素的数组.byte[,] pixel=new byte[20000, 20000];即可,一般情况下, 原来的资源会释放.
展开全部
自动回收的把,你可以把数组写在一个单独的方法里,让他自动回收
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C#是托管的.不需要手动释放.CLR会自动回收垃圾的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int[][] xxx={xxx000...}
xxx=null;
这样系统会自动回收{xxx000...}暂用的内存,因为他已不被任何对象引用。
xxx=null;
这样系统会自动回收{xxx000...}暂用的内存,因为他已不被任何对象引用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用管他,托管数据类型在生命周期结束后,垃圾回收会自动处理
也可以强制垃圾回收器处理:GC.Collect();
也可以强制垃圾回收器处理:GC.Collect();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询