我已经查看了其他讨论,仍然无法弄清楚这一点。我有一个结构,
typedef struct { char * word; int count; } wordType;
在我的代码中,我malloc每个数组[index] .word并重新分配结构数组。我如何正确地解放它们?为清晰起见,我在代码中添加了一些代码段。
wordType *arrayOfWords = NULL;
char temp[50];
arrayOfWords = realloc(arrayOfWords, (unique_words+1)*sizeof(wordType));
arrayOfWords[unique_words].count = 1;
arrayOfWords[unique_words].word = malloc(sizeof(char)*(strlen(temp)+1));
strcpy(arrayOfWords[unique_words].word, temp);
答案 0 :(得分:2)
你会做同样的事情但反过来。
例如,在这里:
要释放它,你可以反过来:
答案 1 :(得分:2)
你必须释放每一块已分配的内存:i。即所有结构中的word
字段,然后是arrayOfWords
数组本身:
for (int i = 0; i < NUM_WORDS; /* whatever it is */ i++) {
free(arrayOfWords[i].word);
}
free(arrayOfWords);
一些好的建议:不要在每一步都realloc()
- 这很乏味。使用指数级增长的存储空间(超出空间时增加一倍)。
答案 2 :(得分:0)
代码将是
for(int counter = 0; counter&lt; count; counter ++)
{
free(arrayOfWords [counter] .words);
}free(arrayOfWords);