*Markus: (C) seltsamer calloc-Fehler + Pointerfragen

Beitrag lesen

Hallo Christoph,

Aktuell bin ich nicht an meinem Heimrechner um den Code posten zu können. Im Prinzip hat sich am Code nichts geändert. Ich habe in den Funktionen nur die Pointerbehandlung vereinfacht, indem ich die Funktionen so abänderte:

  
void setMetaDataBezeichnung(struct metadata *m, const char *s)  {  
         //Falls Zeichenkette länger als MAX_BEZ ist, nur MAX_BEZ+1 (+1 wg. \0) allozieren.  
         if (strlen(s) >= MAX_BEZ)  
            m->bezeichnung = (char*)calloc(MAX_BEZ+1,sizeof(char));  
         else  
                  m->bezeichnung = (char*)calloc(strlen(s)+1,sizeof(char));  
  
         if (m->bezeichnung == 0)  {  
                  printf("Fehler bei der Speicherallozierung");  
                  exit(1);  
         }  
         //Maximal MAX_BEZ Zeichen kopieren. \0 wird automatisch angehängt, da +1 noch frei ist.  
         strncpy(m->bezeichnung, s, MAX_BEZ);  
}  

...sowie ich die Funktion destroyMetaData hinzugefügt wurde (sowohl der Prototyp im Headerfile).
In Main.c wurde die Instanz der Struktur mit *&m übergeben. Ich werde am Abend deinen Tipp ausprobieren, sowie ich auch noch ausprobieren muss wie das Verhalten ist, wenn ich die Struktur im Headerfile deklariere. Sollte aber meiner Meinung nach keinen Unterschied machen, d.h. die Fehler werden wahrscheinlich immer noch auftreten.

Markus.