我该如何在C中释放一个数组?

时间:2017-12-06 03:21:40

标签: c free calloc

我创建了一个在C中释放数组的函数,但我不知道 是否正确:

void dealloc_array(void *array[], int size) {

         int i = 0;

         for (i = 0; i < size; i++) {

                if (array[i]) free(array[i]);
         }

         if (array) free(array);


}

我不确定最后是否应该执行free(array)。从技术上讲,我们已经释放了所有数组元素,因此我们不需要free(array)

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

如果指向malloc指针以及数组的每个元素,则需要在for循环后释放该指针。

例如:

int **array;
array = malloc(SIZE*sizeof(int*));
for(int ii = 0; ii < SIZE; ii++)
{
     array[ii] = (int*)malloc(sizeof(int));
}

你必须释放每个元素和自由数组。 基本上对于你拥有的每个malloc / calloc,你必须有一个免费的

答案 1 :(得分:1)

你必须在最后写free(array),否则会有内存泄漏。