A function pointer is nothing special. It is freed like any other variable inside the struct when you free the struct. But this has nothing to do with prototypes. You even cannot have a prototype in a struct.
Always learn from history, to be sure you make the same mistakes again...