Wuzhen (guessing by your latinized email address) -
Probably the best way to free compiled, relocated, jit-ed machine code is to provide your own memory allocation for it. This lets you free the memory when you're done with it. If you call tcc_relocate(state, NULL), the return value will be the amount of memory that needs to be allocated in order to relocate the code. Just malloc() that memory and pass a pointer to that memory in tcc_relocate: tcc_relocate(state, my_mem).
At least, that's my understanding of how it *should* work. :-)
David