Hi all,
unfortunately I just stumbled over this thread -- a little late. But my first thought after reading the first messages was: memory fragmentation.
Actually in my experience the free memory isn't very often a problem, but the fragmentation of the memory over the time. So the provided tools might tell you a constant amount of free memory but if you're not cautious in avoiding using dynamically sized arrays, strings and queues other than the RT ones you'll end up with unusable free memory because of fragmentation. One sign of fragmentation in my experience is, that such a program runs well for quite a while and a very similar progam (if possible) will run on a PC for ever without any problem...
So what to do? Read the RT manuals; don't use dynamically resized array; if an RT specific function is available use this and not the "normal" counterpart; don't use the standard "merge errors.vi", because this does a dynamical array allocation (write your own; the LV 7.1 version is better)...
Just my 2 cents,
Carsten