А решение состоит в том, чтобы создать класс, поместить туда все глобальные переменные, создавать при необходимости. Удалять, когда нет необходимости.
Да решением почти всегда является фабрика: которой ты говоришь
getSomething/
releaseSomething, а она внутри себя уже думает, как это сделать.
или вообще сделать функции методами класса.
Тут есть свои подводные камни, которые возникают сильно более потом.