我有一个c语言的算法,在这个算法中,内存被多次使用malloc分配。我想写一个函数,当程序完成时释放内存,但我不确定如何构造它。会不会只是多次呼叫free()
?我对C语言和内存分配还比较陌生,所以非常感谢您的帮助。
程序:
typedef struct State State;
typedef struct Suffix Suffix;
struct State { /* prefix + suffix list */
char* pref[NPREF]; /* prefix words */
Suffix* suf; /* list of suffixes */
State* next; /* next in hash table */
};
struct Suffix { /* list of suffixes */
char * word; /* suffix */
Suffix* next; /* next in list of suffixes */
};
最佳答案
对malloc
的每个调用都应该使用free
返回的指针值对malloc
进行相应的调用。
您需要使用某种容器(如数组、链接列表)将malloc
返回的值存储在程序中,并在从free
返回之前对这些值调用main
。
按照以下行编写函数:
void freeMemory()
{
int i = 0;
State* sp = NULL;
State* tmp = NULL;
for ( i = 0; i < NHASH; ++i )
{
sp = statetab[i];
while ( sp != NULL )
{
tmp = sp->next;
free(sp);
sp = tmp;
}
}
}
在
main
语句之前从return
调用它。关于c - C内存分配问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30160318/