我如何释放包含数据集和linked_data的数据库

时间:2014-12-22 07:16:04

标签: c

我想知道如何释放数据库。我的意思是我必须释放linked_data然后数据集然后数据库或我可以释放它只是免费使用数据库地址

1 个答案:

答案 0 :(得分:0)

让我们考虑一个例子。

char ** cPointer = NULL;

现在,我们将以某种方式分配内存

cPointer = malloc(5 * sizeof (*cPointer ));   ------> (1)
for (i = 0; i < 5; i ++)
   cPointer[i] = malloc(32);                  -------> (2)

这里,在情况(1)中,我们将内存分配给cPointer

同样,在情况(2)中,我们将内存分配给cPointer[i]

现在,您可以注意到,在案例(1)中,malloc()返回的指针存储在{1}}返回的指针中。

因此,如果您在释放malloc()之前先释放cPointer,那么您将无法访问cPointer[i],因此,您不能为cPointer[i] free()动态分配的内存cPointer[i]。这将导致你的内存泄漏。

所以,解决方法是,首先free() 内部指针cPointer[i] s,然后free() 外部 cPointer本身。