簡體   English   中英

內存泄漏,realloc()函數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM