[英]Memory leak, realloc() function
在这里,我想从'text'
字符串中提取单词。 内存博士对我说,我在行words = (char**) realloc(words, (amount + 1) * sizeof(char*));
出现内存泄漏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]);
}
当您使用strdup
,它将分配一个新字符串。 因此,在释放数组之前,需要释放使用strdup
分配的每个字符串。
您没有释放整个数组。 您使用realloc
分配的部分。
所以缺少的是一个简单的:
free(words);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.