Memory for the structure is allocated by the host, and the size of that allocation is passed in as well. In part this is done to allow the host to decide how to allocate memory. Perhaps more importantly though, this allows the host to fill in parts of the structure before passing it to the GMP. An example would be the host passing callback function pointers to the GMP. This behavior should be specified clearly in any API specification.
== Process Model ==
Gecko will create one process per origin, with an origin's process handling of all of its resources. This may change in the future.