Hmm, okay. Warum's Abweichungen gibt, keine Ahnung confused

Zu den Arrays: Kommt drauf an, ob du einen Array aus VARs oder aus VAR-POINTERN willst. Normalerweise wenn man einen Array erstellen will nimmt man immer den Typ eines Elements (z.B. 'var') und hängt noch ein '*' an um daraus sozusagen eine indizierbare Liste aus den Elementen dieses Typs zu machen. ('var' -> 'var*', 'STRING*' -> 'STRING**').
Strings objekte werden in Acknex generell schon als Pointer verwendet, deshalb wird daraus ein 'STRING**'. Wichtig: immer str_create() & str_remove()/ptr_remove() richtig verwenden!

In deinem Beispiel erstellt die Funktion ein Array (var**) bestehend aus var-pointern (var*) (der Typ 'var*' im unteren Bereich passt nicht zu dem Rückgabewert der funktion 'var**'!). Falls du einen Array von var-objekten willst würdest du 'var * VarArray = sys_malloc(sizeof(var) * ArraySize);' verwenden (wie gerade beschrieben).

Aus Zufall würde dein Code oben auch mit dem Typ-Fehler funktionieren, weil in dem Fall (32bit Anwendung) ein Pointer genau die gleiche größe hat wie eine var. Also kann man ein 'var*' Array auch als 'var' Array "misbrauchen" (sollte man natürlich nicht).

Last edited by Kartoffel; 06/15/17 08:48.

POTATO-MAN saves the day! - Random