我在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 */
};
答案 0 :(得分:2)
对malloc
的每次调用都应该使用free
返回的指针值对malloc
进行相应的调用。
在从{返回}之前,您需要使用某种容器(例如数组,链接列表,并在这些值上调用malloc
)将free
返回的值存储在程序中。 {1}}。
按照以下方式编写函数:
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
调用它。