Currently all c wrapper records are implemented as an opaque block of bytes, this is not very portable.
The first version of cppmm had the option to choose opaqueptr which means the entire cpp record is allocated on the heap and the cpp record just passes a pointer around to that. This is far more portable, as the size and alignment of the cpp record do not affect the size and alignment of the c one.
Currently all c wrapper records are implemented as an opaque block of bytes, this is not very portable.
The first version of cppmm had the option to choose opaqueptr which means the entire cpp record is allocated on the heap and the cpp record just passes a pointer around to that. This is far more portable, as the size and alignment of the cpp record do not affect the size and alignment of the c one.