我在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
的每个调用都应该使用malloc
返回的指针值对free
进行相应的调用。
您需要使用某种容器(如数组、链表)将malloc
返回的值存储在程序中,并在从main
返回之前对这些值调用free
。
按照以下内容编写函数:
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;
}
}
}
并在CCD_ 9语句之前从CCD_。