次のブロックは、メモリ リークを引き起こします。
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ですか?