free(word)
行仅对我的程序造成错误。如果我删除它,一切正常,为什么会这样呢?按照许多不同文章的建议使用完word
后,我免费使用了。max_str_len
个RAM块,但是如果单词比a
字母短得多,我不想为此分配200个块。有什么建议吗?int read_words(char *words[], int size, int max_str_len) {
char *word;
char ch;
int i;
for (i = 0; i < size; ++i) {
word = (char *)malloc((max_str_len + 1) * sizeof(char));
if (word == NULL)
return -1;
for (int j = 0; j < max_str_len; ++j) {
scanf("%c", &ch);
if (ch == '\n') break;
if (ch == EOF || ch == 'R') return i;
word[j] = ch;
}
words[i] = word;
free(word);
}
return i;
}
我用C语言编写了以下函数,但是有两个问题:我被要求释放动态分配的内存,以防止使用过多的RAM,但是free(word)这行只会导致程序出错。如果我...
malloc
和char*
放入了呼叫者提供的words[i]
,然后将其释放。那没有道理。如果您释放它,则呼叫者将无法对其进行任何操作。