Sorgt nicht ein SetLength dafür das erst Platz für neue größe (durchgehender Adressraum) geschaffen wird und dann das alte Array dorthin kopiert wird?
D.h. du brauchst auf jedenfall mehr
RAM als wenn du direkt die maximale Zielgröße anforderst.
Das zusammen mit den sehr einfach gestrickten MemoryManager von alten Delphis (hier war FastMM4 ein absolute Notwendigkeit) ist das Problem zu erklären.
Windows Vista - Eine neue Erfahrung in Fehlern.