@lanodan it's opaque, generally a struct, implementation varies heavily
The most cursed implementation I know of is that glibc is saddled with an implementation which is a vtable for a C++ class according to the GCC 2.x ABI because the early C++ stdlib and glibc got a bit too close together