[英]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.