From 432e6f951352cc9075f8ff3dbe5adb8915af2819 Mon Sep 17 00:00:00 2001 From: LukVal54 Date: Mon, 17 Nov 2025 18:52:31 +0100 Subject: [PATCH] clearSeries implementiert --- imageInput.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/imageInput.c b/imageInput.c index 62ea871..3a91291 100644 --- a/imageInput.c +++ b/imageInput.c @@ -16,18 +16,19 @@ static FILE* openFileCheckHeader(const char *path) return NULL; char headerbuffer[BUFFER_SIZE]; size_t headerlength = strlen(FILE_HEADER_STRING); - if((fread(headerbuffer, sizeof(char), headerlength, fp)) < headerbuffer) + if((fread(headerbuffer, sizeof(char), headerlength, fp)) != headerlength) { fclose(fp); return NULL; } if(strncmp(FILE_HEADER_STRING, headerbuffer, headerlength) != 0) { - flcose(fp); + fclose(fp); return NULL; } return fp; -}//Oeffnet die Datei. 2. liest aus Datei headerlaenge laenge aus speichert in array vergleicht mit gewolltem header. +} +//Oeffnet die Datei. 2. liest aus Datei headerlaenge laenge aus speichert in array vergleicht mit gewolltem header. ///Gibt bei Erfolg (header laenge richtig, richtiger header) den FILE* Zeiger zurück welcher nun gespeichert hat ///dass nun der header Teil gelesen wurde und somit die nächste Funktion ab dieser Stelle weiter liest. ///NULL, wenn falscher header. @@ -61,7 +62,7 @@ static GrayScaleImageSeries* allocateSeries(unsigned int count) // 2. Prüfen, ob Speicherreservierung nicht funktioniert hat if (series == NULL) { - return NULL; + return NULL;//Wir müssen nichts freen, da wir keinen Speicherplatz reservieren konnten! Gibt nix zu freen } // 3. Initialiseren der Struktur. @@ -164,7 +165,7 @@ GrayScaleImageSeries *readImages(const char *path) unsigned int count = 0, width = 0, height = 0; // --- Schritt 1: Datei öffnen und Header prüfen --- - fp = openAndValidateHeader(path); + fp = openFileCheckHeader(path); if (fp == NULL) { fprintf(stderr, "Fehler: Datei konnte nicht geöffnet oder validiert werden.\n"); return NULL; // Kein Aufräumen nötig, da nichts reserviert/geöffnet wurde @@ -202,4 +203,21 @@ GrayScaleImageSeries *readImages(const char *path) // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { + //von innen nach außen freen + if(series == NULL) + { + return; + } + if(series->images != NULL) + { + for(unsigned int i = 0; i < series->count; i++) + { + if(series->images[i].buffer != NULL) + free(series->images[i].buffer); + } + free(series->images); + } + if(series->labels != NULL) + free(series->labels); + free(series); } \ No newline at end of file