【发布时间】:2014-09-10 15:30:15
【问题描述】:
我有一个名为exam 的全局变量,它的类型是struct Exam:
typedef struct
{
Question* phead;
}Exam;
Exam exam;
在一个函数中,我为指针 phead 分配空间:
int initExam()
{
exam.phead = malloc(sizeof(Question*));
exam.phead = NULL;
return 1;
}
在一个单独的函数中我尝试释放这个内存:
void CleanUp()
{
unsigned int i = 0;
Question* currentQuestion = exam.phead;
while (currentQuestion != NULL) {
// some other code
}
exam.phead = NULL;
}
我还在我的函数中尝试了以下内容:
free(exam.phead);
我的问题是它似乎没有释放 malloc 分配的内存。我希望 CleanUp() 释放exam.phead 分配的内存,我无法更改函数签名或将 free() 调用移动到另一个函数。有什么我做错了吗?我对 C 编程相当陌生。谢谢!
【问题讨论】:
-
您在将
exam.phead分配到initExam之后立即将其设置为NULL。这是直接的内存泄漏。 -
你没有释放指针,你释放了它们指向的东西。
标签: c pointers visual-studio-2012 malloc free