simple answer , or not so simple answer :
a) simple...
arrays are fixed sized determined at compile/link time, so cannot be resized.
you might want to read something on C memory allocation e.g. a random google find here. essentially we use stack (and static) memory allocation, not heap (malloc/free)
2) bit more complicated...
you could implement your own 'allocation' mechanism within a large array, to allocate bits of it out to for various uses.
(I mentioned this before, when I said, you could have an array that could store N samples... such that the length of the array determined the max size of ALL samples rather than 1)
3) complex
ChibiOS does support dynamic memory allocation BUT the firmware needs to be configured in certain ways, and also you'd have to check out how to ensure it allocate from sdram. AND using dynamic allocation is usually avoided for audio applications, as memory management is not free
(hmm, there might also be some nasty side effects, to do with dynamic patch loading... in fact generally its possibly more complex that it initially seems)
as i think was mentioned in previous threads, you have to bare in mind, that with Axoloti , the #1 priority is the audio is not disturbed due to things like memory allocation... so the general model is to know up front how much memory you need to allocate (or rather distribute, as you might as well allocate it all) and avoid things (like) loading up data that there is not enough room for.
if your finding that you need to loads lots of data, and its of different sizes, and you want to optimise memory usage , such that you can load as much as possible option 2 is the solution. (imho) ... this is pretty trivial IF it only happens at start up... doing it on the fly and deallocating memory etc, becomes non-trivial quickly (you'll start to learn quickly about memory allocation strategies )
for 2&3 you may need to have a modified version of the filesystem objects, but again, not too complicated.