Dein Quellcode ist unsauber. Verschiebe den Konstruktoraufruf vor das jeweilige Try. Bei einer
Exception im Constructor würde Free auf die (nicht initialisierte, lokale) Instanzenvariable zugreifen und versuchen diese freizugeben - und das kracht dann. Wenn du das Create ausserhalb von Try/finally hast, dann hast du im Try/finally Block immer eine gültige Instanz (die er auch freigeben kann) und wenn der Konstruktuer eine
Exception wirft, dann gibt er die nicht erstellte Instanz auch nicht frei...