This might be only true for C/C++ and not necessarily Lite-C since I didnt reverse engineer it yet:
Those arrays get "allocated" depending on where you put the definition to.
If its global it gets "allocated" in the .data or .rdata section of your resulting/compiled PE file.
If the definition is on the stack, this data is directly allocated on the stack.
Theres another way to get memory dynamicly at runtime, which is called malloc.
It can allocate memory on the fly and also free it again, also you dont want the engine to save this array since you can read it yourself from a file if you need it. The engines save function is a way more complex then you might think, it has an internal structure (linked list) to keep track of all objects and there state in the game.

TL;DR:
Arrays are designed for data you know the size of, if the size is by any mean dynamic you have to use malloc/free

Last edited by Ch40zzC0d3r; 05/24/17 15:26.