I can get it above 200 shift register elements and still get it to compile, but that may be due to system differences.
However, that design does not scale well. Any time you want to change the number of elements you need to modify the program.
Have you considered a queue of datatype Array of Double?
If you look at buffer allocations in your program you get one buffer for each shift register element and one for the 2D array. Each must have contiguous memory due to the way arrays are stored in memory. If the input array array grows in length, then all of the buffers need to be reallocated. This should be a run time problem rather than compile-time, but the compliler may try to do some optimizations, particularly since it knows all the shift register buffers will be the same size.
The Queue stores each array separately and the arrays can be different lengths. To get all the data, use Get Queue Status with return elements? set True. This will return an array of clusters with each cluster containing one of the input arrays.
Lynn