Constantly serving data to the right-terminal of the shift register is a requirement; the shift register is to hold the value from the previous iteration so it is required for it to get a value...the value overwrites the previous value, it does not allocate new memory for it.
Shift registers are one of the fastest and most efficient ways to store data in LabVIEW. Take a look at functional globals; they are based exactly on that fact.
If you build an array, hold it in a shift register -and then want to clear it just use a case that wires an empty array into the shift register when you want to clear it...On the other hand building arrays (using the build function) should normally be avoided - instead initialize the shift register with an array of t
he right size and then put new data into it using the replace array elements function. That way you are continously working on the same memory block.
If the description above does not match what you are doing attach a picture of the code in question and I'll take a look at it and see if there's any optimization possible.
Mads