Указатель должен быть объявлен как статический
static MYTYPE *buffer = 0;
Затем xxx_init () проверяет, был ли он инициализирован.xxx_deinit () не должен освобождать память, поэтому она по-прежнему доступна для дальнейших вызовов xxx ()
Для освобождения памяти необходима другая функция