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

2025-03-01 06:21:39
推荐回答(5个)
回答1:

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


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

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

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

  void f()
  {
  int *p = (int *) malloc(2 * sizeof(int));
  free(p); //释放
  }

回答2:

你定义数组的方法是静态的,这样的变量是不能释放的,
如果是全局变量,只能随程序的结束而释放
如果是局部变量,则随着定义这个数组的那个函数的结束而自动释放。

如果想动态定义使用、释放内存,则通过指针方式来实现:
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);

回答3:

额,free是用来释放动态数组的吧,
你可以尝试用申请动态数组的方法试试
不是大鸟哈,只是略懂点C而已

回答4:

你这样的是静态数组,由系统自动回收,无法手动操作

回答5:

可以试试。。

free(imgCanny[0]);
free(imgCanny);