See [flint](https://flintlib.org/doc/fmpz.html), cpython and faster-python/ideas. E.g. https://github.com/flintlib/flint/blob/3d3f1f08b1f40c01d8e7de54741357ee6a704700/src/flint.h.in#L454-L455 (this [assume](https://flintlib.org/doc/fmpz.html#c.fmpz) that malloc() always allocates memory blocks on a or byte boundary) and https://github.com/flintlib/flint/blob/3d3f1f08b1f40c01d8e7de54741357ee6a704700/src/fmpz/mul.c#L149-L157
See flint, cpython and faster-python/ideas.
E.g.
https://github.com/flintlib/flint/blob/3d3f1f08b1f40c01d8e7de54741357ee6a704700/src/flint.h.in#L454-L455
(this assume that malloc() always allocates memory blocks on a or byte boundary)
and
https://github.com/flintlib/flint/blob/3d3f1f08b1f40c01d8e7de54741357ee6a704700/src/fmpz/mul.c#L149-L157