我创建了一个在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)
。
感谢您的帮助。
答案 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)
,否则会有内存泄漏。