When you use objects in your rundata structure you need to store them as pointers and create them in the CreateObject function in runtime.cpp, rather than storing them directly in the struct. The reason for this is that MMF doesn't know the content of the rundata structure, only the size, and will only allocate the memory needed. No constructors will be called and any object stored in the struct will result in garbage data.
The reason your example is crashing is most likely because the vector hasn't been properly created and therefore it's internal data is messed up, causing it to crash whenever you try to use it.
Try storing the object as a pointer in your rundata structure, like:
Then, in CreateObject use:
And to avoid memory leaks you should also put the following in the DestroyObject function:
rdPtr->MyVector = new Vector();
Note that you will have to use the -> operator instead of . when you want to use the vector as the object now is a pointer, like:
if(rdPtr->MyVector != null) delete rdPtr->MyVector;
rdPtr->MyVector = null;
You can also use the * operator to 'revert' one pointer depth, like
(*rdPtr->MyVector)[i] = 0;