我想知道如何释放数据库。我的意思是我必须释放linked_data然后数据集然后数据库或我可以释放它只是免费使用数据库地址
答案 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
本身。