Also, da haben wir vor lauter Strings das Wesentliche vergessen
@dandy:
Du hast einen Pointer.
Für den reserviert du ein Array aus x Pointern.
Und davon bekommt in der Schleife jeder einen String gemalloct (bzw, genug Speicherplatz dafür)
Die Schleifenmallocs sollen so viel chars reservieren, wie Buchstaben benötigt werden (grob).
Also ca.
Buchstabenanzahl Byte, weil ein einzelnes char ein Byte braucht.
Das Pointerarray-malloc am Anfang aber...
Ein Pointer hat je nach Computer zB. 4 oder 8 Byte,
und da werden aber nur so viel Byte reserviert, wie man Pointer haben will.
Man braucht das Vierfache/Achtfache
Also statt
C++:
char** str_ausgabe = (char**)malloc(size1);
theoretisch das:
C++:
char** str_ausgabe = (char**)malloc(size1 * 4);
bzw. das:
C++:
char** str_ausgabe = (char**)malloc(size1 * 8);
Und weil man das nicht computerabhängig haben will:
C++:
char** str_ausgabe = (char**)malloc(size1 * sizeof(char *));
@cwriter: Das Selbe, auch in Zeile 5, nur mit calloc
Bzw. dein Programm ist bei mir durch zufällig nicht abgestürzt,
also ausprobieren, ob das alles war, hab ich nicht können.