typedef определяет MCB
как тип указателя на функцию, которая не принимает никаких аргументов, и возвращает void
.
Обратите внимание, что MCB Modes::m_process = NULL;
является C ++, а не C. Кроме того, в C, typedef действительно должен быть typedef void (*MCB)(void);
.
Я не уверен, что вы подразумеваете под «память была освобождена». У вас есть статический указатель на функцию; функция не может быть освобождена. В лучшем случае ваш указатель был сброшен где-то. Просто отлаживайтесь с памятью на m_process
.