Even if it would be possible to use dynamic arrays, I would not recommend it, especially not on an Arduino Uno/Mega with only 2 or 8 KB memory.
Instead, create a static data element (e.g. array) that has a (reasonable) maximum number of created elements. This also has the benefit that the constructor will not be called after initialization, thus no variance in execution time (construction of objects can take time).
To manage multiple items within this data element, you can:
- Using a ring buffer, this is the normal way to store items on one side, and process them from the other (so-called FIFO, first in first out).
- Using a stack (for LIFO, last in last out).
- For arrays, keep one variable that holds the number of elements currently filled.
- You also can create a separate boolean array that defines which elements are filled or not. (do not use a normal boolean array but one bit per element to save space).