I couldn't find it documented. Experiment says 16K (WCHARS). Is that correct?
I have no idea what you're asking about -- what is "f_FUNCTION"?
If you're asking about the size of the buffer passed to a plugin function or command, it's 32K bytes (and always has been), regardless of whether it's a function or command.
TCC itself has no limits on string sizes, but I can't change it in the plugin calls without breaking every plugin in existence.
And no, TCC can't do anything about an ill-behaved plugin writing beyond the end of memory. There is no automagical way to uncorrupt a heap.
(And TCC didn't crash, your plugin did. If you neglected to include exception handling, you could take the TCC process down as well.)