【发布时间】:2011-12-08 03:14:27
【问题描述】:
我一直在尝试使用free() 释放通过malloc() 分配的内存。
它确实释放了一些结构,但保留了一些原样,并且它们还保持与子级的链接。它也永远不会为二叉树释放根(gRootPtr)。
我正在使用 Xcode 来查找二叉树使用的内存是否已被释放,并使用 if 语句。
我用来释放内存的代码:
void FreeMemory(InfoDefiner *InfoCarrier)
{
if ((*InfoCarrier) != NULL) {
FreeMemory((&(*InfoCarrier)->left));
FreeMemory((&(*InfoCarrier)->right));
free((*InfoCarrier));
}
}
我用来查看内存是否已被释放的代码。
if (gRootPtr != NULL) {
return 1;
}
else{
return 0;
}
【问题讨论】:
-
C 中的 Function Free() 不起作用 - 是的,是的。
-
if ((*InfoCarrier) != NULL)` 比较
InfoDefiner是否为 NULL,而不是指针是否为 NULL。 -
一般来说,您可以假设如果一个标准库函数(尤其是像 free 这样与编码一样不可或缺的函数)“不起作用”,那么您做错了什么.
-
欢迎来到 Stack Overflow!为了清楚起见,我已尽我所能编辑了您的问题。请检查我的编辑以确保您的问题仍然反映您要解决的问题。将来,在提问时尽量做到更清晰、更具体。一些关于提问的好技巧可以found here。