You've got a few decisions to make.
First, let's take a look at why people are suggesting you use queues instead of notifiers. They behave similar. You pass the reference to both places, feed values in one, and read elsewhere. But, a notifier can only hold the most recent value. That means if you write to it two or more times in the time it takes to read and process elsewhere, you'll lose data. I doubt you want that if you're trying to simulate data acquisition. Instead, you use the queue so it maintains each of the entries until they're consumed and will do its best to catch back up if you ever fall behind.
Second, you currently have to wire the iterations data somewhere to be able to get the entire 2D array at the end of the while loop. If you want a subVI to process this data, it's trivial to add it just before this point. If it's the last thing on the wire that happens in the iteration, it'll still happen "after the iteration" so to speak. I wouldn't really suggest this as that slows your acquisition rate down to the period required to sample and process the data. You're better off looking at the producer/consumer idea (again, queues) that you've already started to explore.
Third, how long will this acquire? If it's for any meaningful time, you'll quickly be coming back here to troubleshoot your "memory leak" you're seeing. People will look at your code and point out it isn't a memory leak. Rather, it's unbounded growth. If you store ALL of the data you acquire in memory, you'll quickly grow your memory to untenable sizes. Do you really need to have immediate access to all of your data? If not, consider adding some file I/O to store off older values into a file somewhere and allow it to be purged from memory. This will allow your acquisition to run longer as you won't hard cap yourself on available memory.