The attached example VI (saved in LabVIEW 2015) illustrates how to implement a circular buffer. Furthermore, it allows for dynamically changing the size of the buffer while the code is running.
This works flawless for me, requires no explicit initialization and it's already intended to work as independent circular buffer subVI with the data generation & timing parts removed:
Also, after a little bit of testing I have seen that altenbach (haven't tested Darren one) design unnecessary loses data when the buffer it's already full and gets expanded, placing always a 0 at the beginning of the array in place of the unnecessary deleted element. This design should solve that but I don't know if it adds any extra bad behavior, but I didn't notice any.