【发布时间】:2015-12-25 20:19:59
【问题描述】:
我知道,当我们为 var 分配内存时,我们需要通过调用 free() func 并使用指向 var 的指针来释放空间(并且不要让指针悬空)。
但是当我们为 var 数组分配内存时该怎么办? 我们应该去释放数组[0..n]的每个成员,还是仅仅释放第一个成员的指针就足够了?
long *array_p;
size_t elements_num = 5
array_p = malloc(elements_num*sizeof(long));
选项#1:
free(array_p);
array_p=NULL;
选项#2:
for (i=0; i<array_len-1; ++i)
{
free(array_p+i);
array_p+i= NULL;
}
【问题讨论】:
-
您需要调用
free()的次数与调用malloc()的次数相同。 -
你是单独分配元素的吗?如果不是,是什么让你认为你必须单独释放?请提供minimal reproducible example。什么是“var”?
-
malloc() 被调用一次以创建整个数组(我的元素)'array_p =malloc(num_of_elements*element_size)' 我不确定指向该数组的指针是否会释放整个数组,全部或仅第一个元素。
标签: c arrays pointers memory-management