我应该如何释放 C 中的数组?

How should I free an array in C?

我在 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).

感谢您的帮助。

最后一定要写free(array),否则会内存泄露

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

例如:

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

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