c - 我如何免费包含数据集和linked_data的数据库

标签 c

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

最佳答案

让我们考虑一个例子。

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]

现在,您可以注意到,情况 (2) 中 malloc() 返回的指针存储在情况 (1) 中 malloc() 返回的指针中.

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

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

关于c - 我如何免费包含数据集和linked_data的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598134/

相关文章:

c - -Wmissing-field-initializer 使用指定的初始值设定项时

objective-c - 你如何在 Objective-C 中检索可用物理 RAM 的数量?

c - 尝试将 C 转换为汇编

c - 为什么我会收到函数参数的未声明错误? (C)

c - 如何打印传递给 C 函数的变量名称?

c++ - 如何读取 C/C++ 中的结构类型

c - bmp 24 位文件格式上的蓝色 channel

clock() - c 函数的执行时间

c - 结构函数指针参数?

objective-c - 从 .mm 文件中的函数内部调用 C 函数