0 Daumen
529 Aufrufe

Frage:

Hallo,

ich schreibe gerade an einem Programm in C für die Uni und habe ein kleines Problem.

Es ist ein Programm das beim Aufruf eine .txt Datei mit den Eingaben übergeben bekommt und diese in eine .txt Ausgabedatei schreiben soll.

Also das Programm wird so aufgerufen: ./name eingabe.txt ausgabe.txt


Wenn ich versuche, dass Progamm mit einer Eingabedatei zu starten, die nicht existiert bekomme ich eine Fehlermeldung, aber Valgrind meldet, dass Speicher reserviert wurde, und das darf nicht passieren. Wie kann ich das verhindern?


Ich habe folgendes in meinem Code stehen, aber das verhindert den Speicherleck nicht:

Code:

  if (intput == NULL) {
  printf("Can not open input file %s\n", argv[1]);
  return 1;
}
Avatar von

1 Antwort

0 Daumen
WIe kann ich das Speicherleck in C verhindern?

Sorge dafür, dass für jedes erfolgreiche malloc auch das entsprechende free ausgeführt wird.

Ich habe folgendes in meinem Code stehen

Das ist nicht sehr aufschlussreich, weil nicht ersichtlich ist, in welchem Zusammenhang der Code zu dem malloc steht, und wo dein free ist.

printf("Can not open input file %s\n", argv[1]);

Das gibt die Fehlermeldung nach stdout aus. Fehlermeldungen werden üblicherweise nach stderr ausgegeben:

fprintf(stderr, "Can not open input file %s\n", argv[1]);

Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community