这里我想从'text'
字符串中提取单词。记忆博士对我说,我在行words = (char**) realloc(words, (amount + 1) * sizeof(char*));
有内存泄漏问题是什么?
p = strtok(text, " ");
while(p != NULL) {
words = (char**) realloc(words, (amount + 1) * sizeof(char*));
words[amount] = strdup(p);
amount ++;
p = strtok(NULL, " ");
}
for(i = 0; i < amount; i ++) {
free(words[i]);
}
答案 0 :(得分:2)
当您使用strdup
时,它将分配一个新字符串。因此,在释放数组之前,您需要释放使用strdup
分配的每个字符串。
你并没有释放整个阵列。您使用realloc
分配的部分。
所以缺少的是一个简单的:
free(words);