Ich hab dann durch Tests herausgefunden, dass für "x = 2" f1.test[4].typ = 99; funktioniert, obwohl ich die Dimension von test überschreite.
Da überschreibst du einfach den Speicher hinter deinem Testarray, und der kann bereits von sonstwelchen Objekten belegt sein.
sys_malloc ist der richtige Ansatz, nur schreibt man normalerweise in seinen Struct einen Pointer, sprich "REIFEN* test;" sollte es heißen, und in diesem speicherst du dann in der Funktion setup_reifen wie gehabt die Adresse zum Speicherblock ab.