C内存分配问题

时间:2015-05-11 05:38:24

标签: c malloc free

我在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 */
};

1 个答案:

答案 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调用它。