Allocate temporary storage for a value and marshal it into this storage
see the life time constraints imposed by alloca
Allocate storage and marshall a storable value wrapped into a Maybe
the nullPtr is used to represent Nothing