Could you elaborate on why this slightly arcane `alloca` pattern is necessary? Couldn't init work by just taking a `hash_t *h` as argument and returning `void`, for example? A comment (probably at the definition site of `caml_hash_init`) may be helpful.