Как Вы считаете, как в данном случае корректнее всего освобождать пямять и закрывать файлы? Проверять все инициализованные переменные типа type* и ранее открытые файлы в каждом случае проверки ошибок? Полагаться на саму программу, что она корректно освободит пямять при завершении? Использовать глобальные переменные и в слечае ошибки вызывать некую функцию finalize(), которая закрывает все файлы, освобождает пяиять и завершает работу с exit(1)? Или даже использовать goto?
Заранее спасибо.

