From e75d2956a91242bb8c05561dcd785d31e58e10e8 Mon Sep 17 00:00:00 2001 From: "AD005\\z004z3ez" Date: Tue, 18 Nov 2025 09:53:09 +0100 Subject: [PATCH] =?UTF-8?q?Kommentare=20gro=C3=9Fe=20Funktion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- imageInput.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/imageInput.c b/imageInput.c index 403b16b..908de69 100644 --- a/imageInput.c +++ b/imageInput.c @@ -81,7 +81,7 @@ GrayScaleImageSeries *readImages(const char *path) return NULL; } - //Speicher für die gesamte Bildserie reservieren (aber nur für die Pointer und das count-Feld) + //Speicher für die gesamte Bildserie reservieren (aber nur für die Struktur) series = malloc(sizeof(GrayScaleImageSeries)); if(!series) { free(series); @@ -91,9 +91,10 @@ GrayScaleImageSeries *readImages(const char *path) series->count = numImages; //Speicher für die Pointer an sich belegen - series->images = malloc(numImages * sizeof(GrayScaleImage)); - series->labels = malloc(numImages * sizeof(unsigned char)); + series->images = malloc(numImages * sizeof(GrayScaleImage)); //Speicher für alle Bild-Strukturen, nicht aber für die Pixel selbst (denn image ist nochmal ein Array selbst) + series->labels = malloc(numImages * sizeof(unsigned char)); //Speicher für alle Labels + //Prüfen, ob Speicher für die Arrays reserviert werden konnte, wenn nicht -> Freigabe if(series->images == NULL || series->labels == NULL){ free(series->images); //wenn trotzdem was reingeschrieben wurde, dann freigeben @@ -105,19 +106,19 @@ GrayScaleImageSeries *readImages(const char *path) } - //Prüfen, ob der Speicher reserviert werden konnte + //Speicher für die Pixeldaten selbst reserviern und Prüfen, ob er reserviert werden konnte for(unsigned int i = 0; i < numImages; i++){ - series -> images[i].buffer = malloc(width * height); + series -> images[i].buffer = malloc(width * height); //Speicher für Pixeldaten selbst - if(series->images[i].buffer == NULL){ + if(series->images[i].buffer == NULL){ for(unsigned int j = 0; j < i; j++){ - free(series->images[j].buffer); + free(series->images[j].buffer); //wenn Speicher nicht reserviert werden konnte, dann zuerst das Array mit Pixeldaten freigeben } - free(series->images); //wenn trotzdem was reingeschrieben wurde, dann freigeben + free(series->images); //anschließend auch die Speicher für Bildstrukturen und Label-Arrays freigeben, weil zuvor für diese schon Speicher reserviert wurde free(series->labels); free(series); @@ -130,11 +131,12 @@ GrayScaleImageSeries *readImages(const char *path) for(int i = 0; i < numImages; i++) { - + //Breite und Höhe werden gesetzt (GrayScaleImage) series -> images[i].width = width; series -> images[i].height = height; - + + //Pixeldaten einlesen und Prüfen ob alle essentiellen Pixel eingelesen wurden if(fread(series -> images[i].buffer, 1, width * height, fp) != (width * height)) { clearSeries(series); @@ -142,6 +144,7 @@ GrayScaleImageSeries *readImages(const char *path) return NULL; } + //Jedes Bild hat ein Label, was direkt danach eingelesen wird und auf Größe geprüft wird if(fread(&series -> labels[i], 1, 1, fp) != 1){ clearSeries(series); fclose(fp);