Hallo,
danke nochmals für deine ausführliche Erklärung. Ab der Mitte musste ich es mir nochmals durchlesen, aber ich glaube, dass mir allmählich der Knopf aufgeht. :)
Ich habe letztendlich auch deinen Rat befolgt und typedef entfernt. Eines dabei ist aber verwunderlich.
files[i] = (File)malloc(sizeof(*File));
So etwas schrieb ich schon mal, weil ich offensichtlich schon mal auf der richtigen Fährte war. Es lässt sich aber nicht kompilieren, zumindest nicht mit gcc, als welchem Grund auch immer. Ich dachte, dass ich wieder mal Blödsinn dachte und fing wieder an zu basteln.
Jedenfalls ist nun auch das Verhalten erklärt, warum die Abstürze stets "am Schluss" passierten, da einfach der Platz nicht mehr vorhanden war. Den Fehler hätte ich wohl nie gefunden, da ich dort, wo er eig. verursacht wird, gar nicht gesucht habe.
Valgrind scheint sehr vielversprechend zu sein. Werd's mir gleich mal ansehen.
Viele Grüße,
Markus