Tom,
This is actually a Windows limitation. In order to initialize a large array, we need to have not only that memory free, but a contiguous block of that size. If it's broken into chunks, we can't place an array that spans chunks. You can witness this by making a VI that allocates and deallocates increasingly large arrays - this will cause new memory to be allocated since it won't fit into the old spot. Eventually, you'll receive a memory full error, despite having the total sum of memory availble. Unfortunately, this behavior spans from the way Windows handles memory, and not from LabVIEW.
You can see a more detailed discussion here:
http://www.ittvis.com/services/techtip.asp?ttid=3346To work around this, you should
1) Avoid initializing data chunks of this size more than once in a session of LabVIEW.
2) If you must, initalize the largest block FIRST, then subsequent arrays would fill the gap left behind the largest block. You will notice if you try your test in reverse -- intialize the larger array first then the smaller one, you probably will not receive the error.
3) Try using several smaller arrays instead of one huge one.
Since memory fragmentation is by process, you can reset the fragmentation for the process by restarting LabVIEW.
Hope the helps.
--Paul Mandeltort
Automotive and Industrial Communications Product Marketing