Ich darf also annehmenn, dass du probiert hast den ersten Eintrag von main[] zu ändern? Bei mir lokal funktioniert das erwartungsgemäß.
Welches System benutzt du und welchen Compiler?
Das sizeof(g.array) gibt dir in Byte die Größe von UBYTE * zurück. Das muss eigentlich 4 sein, wenn es 32-Bit Pointer sind.