Wenn Du Dich zum Lesen von XML des XML-SAX bedienst, dann bietet es sich an, das analog wie der zu tun:
* Du übergibst dem Serviceprogramm die Adresse des zu füllenden Speicherbereichs in Deinem Programm.
* Und die Adresse einer Routine, die beim Erreichen des Endes des umschließenden Elements aufzurufen ist. ("Callback")

Damit kannst Du auch Millionen von "XML-Records" verarbeiten.

Und auch sonst ist es einfacher, zuerst Speicher zu definieren und die Adresse einem Serviceprogramm zu übergeben als umgekehrt. Vor allem, wenn Du offenbar ganz genau weißt, wie viel Platz Du brauchst.