C语言:怎么销毁数组呢?

如题哈:最近写一个“机器视觉”的程序,程序中对图片进行大量的处理,处理过程中会用到很多较大的二维数组,用完后就没有用啦,所以想问一下,如何销毁数组呢?【例如】intimg... 如题哈:
最近写一个“机器视觉”的程序,程序中对图片进行大量的处理,处理过程中会用到很多较大的二维数组,用完后就没有用啦,所以想问一下,如何销毁数组呢?
【例如】
int imgCanny[1000][1000];
... ...
... ...
然后想要销毁这个“imgCanny” 数组,该怎么做呢?貌似用free(imgCanny);程序会报错。
希望各位大鸟帮帮忙哈。
非常感谢。
展开
 我来答
吉祥二进制
高粉答主

2015-05-27 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84582

向TA提问 私信TA
展开全部

  要看数组所使用的内存空间。


  1、如果是局部函数栈空间中的数组,有程序自动回收。

  void f()
  {
  int a[2] = {1,2}; //局部栈空间上的数组,程序自动回收
  }

  2、如果是动态内存分配 的数组,在c语言中使用free()将其释放。回收有操作系统的堆管理器来进行操作。

  void f()
  {
  int *p = (int *) malloc(2 * sizeof(int));
  free(p); //释放
  }
kaixingui2012
2013-02-15 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6461万
展开全部
你定义数组的方法是静态的,这样的变量是不能释放的,
如果是全局变量,只能随程序的结束而释放
如果是局部变量,则随着定义这个数组的那个函数的结束而自动释放。

如果想动态定义使用、释放内存,则通过指针方式来实现:
int *pImgCanny=NULL ;
int (*p2)[1000] ; //定义一个数组指针,可象使用二维数组一个来操作指针

pImgCanny=malloc( 1000*1000*sizeof(int) ) ;
p2=(int **)pImgCanny ;

p2[0][0]=100;
p2[0][1]=200 ;

用完后,释放:
free(pImgCanny);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
竹竹风子kemi
2013-02-15 · TA获得超过3696个赞
知道大有可为答主
回答量:4572
采纳率:44%
帮助的人:2624万
展开全部
额,free是用来释放动态数组的吧,
你可以尝试用申请动态数组的方法试试
不是大鸟哈,只是略懂点C而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-02-15
展开全部
你这样的是静态数组,由系统自动回收,无法手动操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哎哟哟926
2013-02-15 · 超过11用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:34.8万
展开全部
可以试试。。

free(imgCanny[0]);
free(imgCanny);
追问
这样,也是报错............
追答
错误信息是tangram_guid_1360897266192
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式