我应该如何释放 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,您都必须拥有一个免费的
我在 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,您都必须拥有一个免费的