All arrays are dynamic in DBP, but they are not linked lists. If you add a new element dynamically then the memory used by that array will be reassigned - the newly sized array will find a new home in memory whilst the old is deleted.
If you need 500 elements, create them at the start and code to manage the fact that some of them may be empty (maybe a variable that gives you the last element is use)
You can take this much further, as I wrote about in the newsletter editorial in
issue 72. I actually had the same problem
here, and the solution to the issue is finally found in that thread
here where my code finally speeds up 500% over the original unoptimised method of tracking objects.