Ich habe gerade mit dem Programmieren angefangen und habe eine Anfängerfrage, ich möchte eine Funktion schreiben, um eine Datei mit unbekannter Länge Zeile für Zeile zu lesen. Da ich die Länge jeder Zeile nicht kennen würde, habe ich sie verwendet getline()
Funktion:
void readDict(FILE *dict_file){
//Read dic
char *line;
size_t len = 0, read;
while((read = getline(&line, &len, dict_file))!=-1){
check(line);
}
free(line);
return;
}
Seit getline()
ist irgendwie ähnlich malloc()
und realloc()
eine Zeichenfolge, also wenn ich diese Funktion weiterhin verwende, um viele Zeilen mit unbekannter Länge zu lesen, bekomme ich dann ein Speicherleck oder keinen Speicher mehr?
Basierend auf Dokumentationdu musst
malloc
Speicher fürline
Vor Berufunggetline
.– bejado
27. Februar 2017 um 6:10 Uhr
@bejado Nein, es ist kein Muss.
– Sourav Ghosh
27. Februar 2017 um 6:10 Uhr
@SouravGhosh wie würden Sie es tun, ohne Speicher zuzuweisen?
– bejado
27. Februar 2017 um 6:12 Uhr
@bejado “Wenn *lineptr NULL ist, weist getline() einen Puffer zum Speichern der Zeile zu, der vom Benutzerprogramm freigegeben werden sollte.”
– Sourav Ghosh
27. Februar 2017 um 6:14 Uhr
@SouravGhosh wusste das nicht, danke!
– bejado
27. Februar 2017 um 6:15 Uhr