Genau anders rum
LINE_WORD_COLOR * colors_in_zeilen = sys_malloc(sizeof(LINE_WORD_COLOR) * all_dialog_lines);
sys_malloc(size): size ist die größe des memory-blocks den du haben willst und
sys_malloc gibt dir den pointer darauf zurück.
sizeof(LINE_WORD_COLOR) ist die Größe
eines LINE_WORD_COLOR-Objekts. Damit du einen array aus mehreren elementen bekommst musst du die Größe mal die array Länge nehmen.
Wenn du aber
sizeof(LINE_WORD_COLOR*) verwendest, dann ist das nur die Größe eines pointers (32 bit -> 4 byte), weil der typ im sizeof ein pointer ist.