:char_p => {
  :default => '""',
  :ctype => 'char* %s',
  :ruby2c => 'StringValuePtr(%s)',
  :c2ruby => 'rb_str_new2(%s)'}

I think you'll want to store either a copy of the string or a reference
to the string object (which would need to be marked).  If you don't, the
string could be destroyed before the containing struct, which would
leave you with a dangling pointer.

Paul