内存泄漏,realloc()函数

时间:2013-12-05 13:54:29

标签: c memory-leaks

这里我想从'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]);
}

1 个答案:

答案 0 :(得分:2)

当您使用strdup时,它将分配一个新字符串。因此,在释放数组之前,您需要释放使用strdup分配的每个字符串。

你并没有释放整个阵列。您使用realloc分配的部分。

所以缺少的是一个简单的:

free(words);