A doubt regarding RecordVal


I have a doubt regarding the use of RecordVal type.

when we say:
conn_val = new RecordVal(connection_type);

How many fields are there in the created record ?
It depends on the type of record. But where do we define that recordtype
connection_type has to have say 12 fields ?

Now after that when we say...
conn_val->Assign(12, new StringVal(tm_string)); or
conn_val->Assign(13, new StringVal(tm_string));

Is the size of the record increased dynamically depending on how many
Assigns we make ? or will it stop assigning when the size of the record is
reached ?

Any pointers is welcome ....

thanks a lot