以下块导致内存泄漏:
FILE *fp = fopen(path, "r");
char *line = NULL;
size_t len = 0;
ssize_t read = -1;
while ((read = getline(&line, &len, fp)) != -1) {
/*Do something*/
}
1个块中的120个字节肯定会丢失......
...getline (getline.c:34)
我可以通过添加一个来解决这个问题free()
:
while ((read = getline(&line, &len, fp)) != -1) {
/*Do something*/
}
free(line);
我的问题是:为什么在失败时getline
分配内存?line
为什么我不需要free(line)
每次来电getline
?