You are absolutely incorrect. By providing a C structured type, the memory that is used by this type in bmax is passed by reference, as a pointer to the calling library, so there is a 4 byte push onto the stack to the address of the vertex memory, rather than a complete copy to a new bank. ..and then a copy back once the vertices have been manipulated!
This is where varptr comes in which is mainly for communication with C/ASM and not for BM internally as it bypasses the GC.